Ansible 小试牛刀
2018-03-15 by dongnan
功能
Ansible
是一款轻量级的 IT
自动化工具,Ansible
默认通过 SSH
协议与远程机器进行通信,所以安装 Ansible
之后不需要运行任何后台进程,就可以直接管理远程的服务器。
优势
- 容易上手,可作为批量执行工具。
- 模块化,支持
playbook
。 - 无客户端,客户端无需任何配置,由管理端配置好后即可使用。
- 社区活跃,丰富的内置模块。
场景,
- 应用部署
- 配置管理
- 任务编排
- 等等。
环境
- 操作系统
head -n1 /etc/issue
CentOS release 6.9 (Final)
- 主机信息
管理节点: 10.0.1.1
托管节点: 10.0.1.2
- SSH 认证
已经配置
SSH KEY
方式登录,方法参考这里 。 Ansible 会默认假定你使用SSH Key
(推荐)但是密码也一样可以, 通过在需要的地方添加--ask-pass
选项来启用密码验证,如果使用了sudo
特性,当sudo
需要密码时,也同样适当的提供了--ask-sudo-pass
选项。
要求
- 管理节点, 依赖
Python 2.6
上的版本。 - 托管节点, 依赖
SSH
服务以及Python 2.6
上的版本。
安装
软件包信息
yum info ansible
...省略
Summary : SSH-based configuration management, deployment, and task execution system
Description :
: Ansible is a radically simple model-driven configuration management,
: multi-node deployment, and remote task execution system. Ansible works
: over SSH and does not require any software or daemons to be installed
: on remote nodes. Extension modules can be written in any language and
: are transferred to managed machines automatically.
使用 yum安装
yum install ansible
安装的版本
ansible --version
ansible 2.4.2.0
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.6/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.6.6 (r266:84292, Aug 18 2016, 15:13:37) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)]
小试牛刀
Ansible
命令行执行方式有 Ad-Hoc
、Ansible-playbook
两种方式,本文先会测试下 Hoc
模式,后续会对 playbook
测试。
配置文件
编辑 /etc/ansible/hosts
并在其中加入一个或多个托管节点,这里假设已经配置了 SSH KEY
方式登录。
tail -n1 /etc/ansible/hosts
efg
测试通信
ansible all -v -m ping
Using /etc/ansible/ansible.cfg as config file
efg | SUCCESS => {
"changed": false,
"ping": "pong"
}
测试执行一个命令
ansible all -v -m shell -a 'id'
Using /etc/ansible/ansible.cfg as config file
efg | SUCCESS | rc=0 >>
uid=0(root) gid=0(root) groups=0(root)
# 默认 shell模块,可以省略。
ansible all -v -a 'id'
Using /etc/ansible/ansible.cfg as config file
efg | SUCCESS | rc=0 >>
uid=0(root) gid=0(root) groups=0(root)
参数
Usage: ansible <host-pattern> [options]
Define and run a single task 'playbook' against a set of hosts
-v, --verbose
verbose mode (-vvv for more, -vvvv to enable connection debugging)
-m MODULE_NAME, --module-name MODULE_NAME
module name to execute (default=command)
-a MODULE_ARGS, --args MODULE_ARGS
module arguments