Ansible - 文件管理¶
本章将学习如何使用 Ansible 管理文件。
目标: 在本章中,您将学习如何
修改文件内容;
将文件上传到目标服务器;
从目标服务器检索文件。
ansible、module、files
知识:
复杂度:
阅读时间: 20 分钟
根据您的需要,您将需要使用不同的 Ansible 模块来修改系统配置文件。
ini_file
模块¶
当您想修改 INI 文件([]
之间的部分,然后是 key=value
对)时,最简单的方法是使用 ini_file
模块。
注意
更多信息可以在 这里找到.
该模块需要
- 该部分的值
- 该选项的名称
- 新值
使用示例
- name: change value on inifile
community.general.ini_file:
dest: /path/to/file.ini
section: SECTIONNAME
option: OPTIONNAME
value: NEWVALUE
lineinfile
模块¶
要确保文件包含某一行,或者当需要在文件中添加或修改某一行时,请使用 linefile
模块。
注意
更多信息可以在 这里找到.
在这种情况下,要修改的文件中的行将使用正则表达式找到。
例如,要确保 /etc/selinux/config
文件中以 SELINUX=
开头的行包含值 enforcing
- ansible.builtin.lineinfile:
path: /etc/selinux/config
regexp: '^SELINUX='
line: 'SELINUX=enforcing'
copy
模块¶
当需要将文件从 Ansible 服务器复制到一个或多个主机时,最好使用 copy
模块。
注意
更多信息可以在 这里找到.
在这里,我们将 myflile.conf
从一个位置复制到另一个位置
- ansible.builtin.copy:
src: /data/ansible/sources/myfile.conf
dest: /etc/myfile.conf
owner: root
group: root
mode: 0644
fetch
模块¶
当需要将文件从远程服务器复制到本地服务器时,最好使用 fetch
模块。
注意
更多信息可以在 这里找到.
该模块执行与 copy
模块相反的操作
- ansible.builtin.fetch:
src: /etc/myfile.conf
dest: /data/ansible/backup/myfile-{{ inventory_hostname }}.conf
flat: yes
template
模块¶
Ansible 及其 template
模块使用 Jinja2 模板系统(http://jinja.pocoo.org/docs/)在目标主机上生成文件。
注意
更多信息可以在 这里找到.
例如
- ansible.builtin.template:
src: /data/ansible/templates/monfichier.j2
dest: /etc/myfile.conf
owner: root
group: root
mode: 0644
如果目标服务允许,则可以添加验证步骤(例如,apache 使用命令 apachectl -t
)
- template:
src: /data/ansible/templates/vhost.j2
dest: /etc/httpd/sites-available/vhost.conf
owner: root
group: root
mode: 0644
validate: '/usr/sbin/apachectl -t'
get_url
模块¶
要从网站或 ftp 上传文件到一个或多个主机,请使用 get_url
模块。
- get_url:
url: http://site.com/archive.zip
dest: /tmp/archive.zip
mode: 0640
checksum: sha256:f772bd36185515581aa9a2e4b38fb97940ff28764900ba708e68286121770e9a
通过提供文件的校验和,如果目标位置已存在该文件且其校验和与提供的校验和匹配,则不会重新下载该文件。