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 #将本地文件推送到远端,指定文件权限信息
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