Ansible的文件管理模块


对于文件管理,我们在学习Linux基础的时候,就学习了很多命令,比如创建,删除,移动,拷贝,下载...等
生产场景,统一配置管理

cpoy模块

# 推送文件模块
ansible all -m copy -a "src=/etc/passwd dest=/tmp/a.txt"
 
# 在推送覆盖远程端文件前,对远端已有文件进行备份,按照时间信息备份
ansible all -m copy -a "src=/etc/passwd dest=/tmp/a.txt backup=yes"
 
# 直接向远端文件内写入数据信息,并且会覆盖远端文件内原有数据信息
ansible all -m copy -a "content='这个一个数据' dest=/tmp/a.txt backup=yes"
 
src             #推送数据的源文件信息
dest            #推送数据的目标路径
backup          #对推送传输过去的文件,进行备份
content         #直接批量在被管理端文件中添加内容
group           #将本地文件推送到远端,指定文件属组信息
owner           #将本地文件推送到远端,指定文件属主信息
mode            #将本地文件推送到远端,指定文件权限信息

image-20241015214206309

file模块

ansible all -m file -a "path=/tmp/这是一个_dir state=directory"

ansible all -m file -a "path=/tmp/这是一个_file state=touch mode=0555 owner=root group=root"

ansible all -m file -a "src=/tmp/这是一个_dir path=/tmp/这是一个软连接_dir_link state=link"


ansible all  -m shell -a 'useradd lzd'
ansible all  -m shell -a 'mkdir /tmp/aaa/bbb/ccc -p'
ansible all -m file -a "path=/tmp/aaa state=directory owner=lzd group=lzd mode=0700 recurse=yes"
 
path            #指定远程主机目录或文件信息
recurse         #递归授权
state 
    directory   #在远端创建目录
    touch       #在远端创建文件
    link        #link或hard表示创建链接文件
    absent      #表示删除文件或目录
    mode        #设置文件或目录权限
    owner       #设置文件或目录属主信息
    group       #设置文件或目录属组信息

get_url

ansible all -m get_url -a 'url=https://linuxmirrors.cn/main.sh dest=/tmp/这是下载的文件名 mode=777' 
 
url             #指定下载地址
dest            #指定下载的目录
mode            #指定权限
checksum        #校验加密算法
    md5
    sha256

unarchive

src: 指定归档文件的路径,可以是本地文件或者远程 URL。
dest: 解压缩文件的目标目录。
remote_src: 如果归档文件已经在目标主机上,设置为 true。
creates: 如果目标目录中已经存在指定文件或目录,则跳过解压。
copy: 如果设置为 true,文件会从控制节点复制到目标节点上。默认是 true,如果不想复制可以设置为 false。
extra_opts: 传递给解压命令的额外参数。
mode: 设置解压文件的权限模式。

template模块

Ansible 的 template 模块用于将 Jinja2 模板文件渲染成目标主机上的配置文件。它通常用于动态生成配置文件,内容可以根据主机的变量而变化。
- name: Deploy configuration file
  template:
    src: template.j2          # 源模板文件路径
    dest: /etc/config_file     # 目标文件路径
### 示范
template.j2
[settings]
server_name = {{ ansible_hostname }}
{{ http_port }}


- hosts: all
  vars:
    - http_port: 8080
  tasks:
    - name: Deploy configuration file
      template:
        src: template.j2
        dest: /tmp/my_config.conf
        
cat my_config.conf 
[settings]
server_name = 101
8080