介绍:
ansible是一个自动化运维工具,通过SSH协议管理服务器,基于模块来完成自动化任务,ansible完成批量性任务,自动部署各种服务和环境.
安装
使用python3的pip工具安装:pip3 install ansible
开始使用:
管控机可通过ssh连接受控机. 建议设置密钥认证.明文密码不安全.
管控端用户和受控端用户都是普通用户.
生成ssh密钥的命令: ssh-keygen -t rsa
私钥和公钥生成后默认在~/.ssh目录下,ansible管控端的公钥需要放在受控端的.ssh/authorized_keys文件中.
执行命令:
ssh-copy-id -i ~/.ssh/id_rsa.pub yuan@192.168.1.1 -p200
这条命令会将公钥存放到authorized_keys文件中。
-i 选项指定要传输的公钥文件
指定用户和IP,端口等信息。
ssh代理: ssh-agent
ssh-agent 可管理私钥。
使用不同密钥连接不同主机,ssh-agent可自动选择对应的密钥进行认证。
密钥设置密码时,也需要使用ssh-agent来管理。
启动ssh代理并添加密钥:
ssh-agent bash 执行后会在当前shell中启动一个默认shell. ssh-agent在子shell中执行。
eval ssh-agent 进入新创建的子shell,会启动一个ssh-agent进程。
ssh-agent -k 关闭ssh-agent代理。
ssh-agent管理密钥:
将私钥添加到ssh代理:
ssh-add ~/.ssh/id_rsa_custom
查看ssh代理中已经添加了那些私钥:
ssh-add -l
列出代理中所有私钥对应的公钥内容:
ssh-add -L
从代理中移除某个已经添加的私钥:
ssh-add -d 要移除的私钥名称
清空代理中的所有私钥:
ssh-add -D
临时锁定ssh代理:
ssh-add -x
解锁ssh代理:
ssh-add -X
配置主机清单(Inventory):
ansible的配置清单为: /etc/ansible/hosts
sudo mkdir /etc/ansible/
sudo vim /etc/ansible/hosts
[test] 组名称
192.168.1.1 ansible_port=200
测试
ansible test -m ping
生成密钥指定输出文件名称的方式:
在管控端执行:
$ssh-keygen -t rsa -f id_rsa-test
ssh-copy-id -i ~/.ssh/id_rsa-test.pub yuan@192.168.1.1 -p200
ssh -p200 yuan@192.168.1.1
yuan@192.168.1.1‘s password:
仍提示输入密码,说明没有找到对应的私钥。
ssh-agent bash
eval ssh-agent
ssh-add ~/.ssh/id_rsa-test
再次ssh -p2020 yuan@192.168.1.1 登录,已经免密钥登录成功。
配置清单详解
例如:
[web]
192.168.1.3
[db]
192.168.1.5
支持在组内嵌套组:
例如:
[webA]
192.168.1.3
[webB]
192.168.1.4
[web:children] //表示当前组中存在子组。
webA
webB
建议采用在组内嵌套组的方法,这样看起来逻辑更清晰。
例如:
[web]
192.168.1.3
[db]
192.168.1.5
支持YAML语法
YAML语法:
第一行组名
第二行使用一个空格作为缩进。使用hosts关键字。
第三行开头使用两个空格作为缩进。
第四行开头使用两个空格作为缩进。
例如:
test:
hosts:
192.168.1.1
test1:
ansible_host: 192.168.1.5
ansible_port: 150
192.168.1.6:
在组中嵌套组的YAML写法:
all:
children:
web:
children:
webA:
hosts:
192.168.1.3:
webB:
hosts:
192.168.1.4:
上述配置说明: web组有两个子组,分别为webA组和webB组,而这两个组分别有自己组内的主机。
建议采用YAML语法。
原文:http://blog.51cto.com/liyuanjie/2327328