准备(前戏)
安装
yum install ansible
查看与ansible相关的文件信息
rpm -ql ansible|less
命令与选项
hosts基本语法
主机与组
[webserver]
www.exaple.com
test.exaple.com
[dbserver]
one.example.com
two.example.com
备注:端口号不是默认的时候,可以表示为
www.exaple.com:5122
主机别名
如果有些静态IP地址,希望设置一些别名,但不是在系统的host文件中做解析
test_name ansible_ssh_port=5122 ansible_ssh_host=192.168.100.1
主机名扩展
可以像bash那样设置一组名称类似的主机
[webserver]
web[01:50].example.com
db-[a:f].example.com
自定连接
对于每一个host,还可以选择连接类型和连接用户名
[targets]
other1.example.com ansible_connection=ssh ansible_ssh_user=sam
other2.example.com ansible_connection=ssh ansible_ssh_user=mdehaan
主机变量
在hosts中给主机设置变量,这样可以在playbook中使用
[web]
host1 http_port=80 maxRequestsPerChild=808
host2 http_port=303 maxRequestsPerChild=909
组变量
通过关键字vars
[webserver]
host1
host2
[webserver:vars]
ntp_server=ntp.atlanta.example.com
proxy=proxy.atlanta.example.com
把一个组作为另个组的子成员
[webserver]
host1
host2
[dbserver]
host3
host4
[saas:children]
webserver
dbserver
[saas:vars]
some_server=foo.southeast.example.com
halon_system_timeout=30
self_destruct_countdown=60
escape_pods=2
Inventory参数说明
要连接的远程主机与设定的主机别名不同时
ansible_ssh_host
指定ssh端口号
ansible_ssh_port
指定连接用户名
ansible_ssh_user
指定连接密码(建议使用--ask-pass)
ansible_ssh_pass
指定sudo密码(建议--ask-sudo-pass)
ansibl_sudo_pass
指定sudo执行命令的路径
ansible_sudo_exe
指定与主机的连接类型
ansible_connection
使用指定密钥文件
ansible_privte_key_file
指定目标系统的shell类型
ansible_shell_type
指定目标主机的python路径(相同的方式可以指定ruby、perl)
ansible_python_interpreter
常用指令与选项
ansible
-u # 指定用户名
-k # 提示密码
-i # 使用指定主机清单
-m # 使用指定module,默认command
-a # module参数
ansible-doc
-l # 列出所有module
-s # 列出指定模块的使用方法
常用模块及使用方法
(1)配置hosts文件
[webserver]
192.168.100.131
192.168.100.132
[dbserver]
192.168.100.133
(2)配置ansible主机与个客户机间密钥认证(这里直接使用copy模块完成)
copy模块
ansible all -m copy -a 'src="/root/.ssh/id_rsa.pub" dest="/root/.ssh/authorized_keys" mode=600 backup="yes"' --ask-pass
说明:
src # 源文件或文件夹(如果是源文件以/结尾,则只拷贝该目录下的内容)
dest # 目标文件或目录(父目录不存在时会报错)
mode # 权