Ansible使用入门
安装Ansible
pip install ansible
Ansible包含了多个工具。安装完Ansible以后,控制端会增加以下几个可执行程序:
- ansible
- ansible-doc
- ansible-playbook
- ansible-vault
- ansible-console
- ansible-galaxy
- ansible-pull
Ansible架构
从上图可以了解到ansible由以下部分组成:
- 核心:ansible
- 核心模块(Core Modules):这些都是ansible自带的模块
- 扩展模块(Custom Modules):如果核心模块不足以完成某种功能,可以添加扩展模块
- 插件(Plugins):完成模块功能的补充
- 剧本(Playbooks):ansible的任务配置文件,将多个任务定义在剧本中,由ansible自动执行
- 连接插件(Connectior Plugins):ansible基于连接插件连接到各个主机上,虽然ansible是使用ssh连接到各个主机的,但是它还支持其他的连接方法,所以需要有连接插件
- 主机群(Host Inventory):定义ansible管理的主机
Ansible的运行环境
Ansible通过读取配置文件/etc/ansible/hosts(如果没有可以新建文件)来确定需要访问和操作的服务器列表
可以通过Ansible中的ping模块来尝试与主机列表进行访问测试,注意它不是去ping列表中的主机,而是通过尝试建立ssh连接来验证。
可以分别为每台需要远程操作的服务器指定用户名和访问端口,修改/etc/ansible/hosts文件即可
如果批量主机的用户名和端口号都一致,则可以通过配置文件/etc/ansible/ansible.cfg来指定统一的默认值
这样就不用每个主机都在/etc/ansible/hosts中指定登录用户名和端口了
ad-hoc模式
ansible的command模块用于在远程服务器中执行指定的shell命令,它通过-a选项来指定命令内容
几个常用ansible模块示例:
# 将本地文件拷贝到服务器中
ansible test -m copy -a "src=/tmp/data.txt dest=/tmp/data.txt"
# 修改文件的所有者和权限
ansible test -m file -a "dest=/tmp/data.txt mode=500 owner=root group=root" -become
# 远程服务器安装软件
ansible test -m apt -a "name=tmux state=present" -become
使用playbook控制服务器
除了使用命令行执行简单的ansible操作之外,使用范围更广的是将需要执行的ansible操作写进一个被称为YAML的配置文件中,这样可以执行更复杂的操作。这样的YAML配置文件被称为Ansible Playbook,如下所示:
然后通过命令执行playbook中的内容:
# 执行playbook
ansible-playbook test_playbook.yml
# 查看日志执行playbook
ansible-playbook -vvv test_playbook.yml