配置说明
# 文件目录
/etc/ansible/ansible.cfg 主配置文件,配置ansible工作特性(一般无需修改)
/etc/ansible/hosts 主机清单(将被管理的主机放到此文件)
/etc/ansible/roles/ 存放角色的目录 # 默认路径,可以修改
1
2
3
2
3
# 程序文件
/usr/bin/ansible 主程序,临时命令执行工具
/usr/bin/ansible-doc 查看配置文档,模块功能查看工具 # 1000+的模块的使用说明
/usr/bin/ansible-galaxy 下载/上传优秀代码或Roles模块的官网平台
/usr/bin/ansible-playbook 定制自动化任务,编排剧本工具
/usr/bin/ansible-pull 远程执行命令的工具
/usr/bin/ansible-vault 文件加密工具
/usr/bin/ansible-console 基于Console界面与用户交互的执行工具
1
2
3
4
5
6
7
2
3
4
5
6
7
# 主机清单 Inventory
ansible的主要功用在于批量主机操作,为了便捷地使用其中的部分主机,可在inventory file中将其分组命名
默认的inventory file为/etc/ansible/hosts
inventory file可以有多个,且也可以通过Dynamic Inventory来动态生成
/etc/ansible/hosts文件格式
inventory文件遵循INI文件风格,中括号中的字符为组名
可将同一个主机同时归并到多个不同的组中
若目标主机使用了非默认的SSH端口,可在主机名称之后使用冒号加端口号来标明
# 常规配置
示例
ntp.stt.com #不分组,直接加
192.168.10.102
192.168.10.103
192.168.10.104
1
2
3
4
2
3
4
# 分组配置
如果主机名称遵循相似的命名模式,可使用列表的方式标识各主机,示例
[webservers] #webservers组
www1.stt.com:2222 #可以指定端口
www2.stt.com
[dbservers]
db1.stt.com
db2.stt.com
db3.stt.com
[websrvs]
192.168.10.10[2:4] #表示102-104范围内的ip
[dbsrvs]
db-[a:f].example.com #表示范围dba-dbf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 组嵌套
[apache]
httpd1.stt.com
httpd2.stt.com
[nginx]
ngx1.stt.com
ngx2.stt.com
[websrvs:children] # 将上面2个组进行组合
apache
nginx
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 参数
用于定义ansible远程连接目标主机时使用的参数,而非传递给playbook的变量;ansible基于ssh连接inventory中指定的远程主机时,可以通过参数指定其交互方式
ansible_ssh_host
- The name of the host to connect to, if different from the alias you wishto give to it.
ansible_ssh_port
- The ssh port number, if not 22
ansible_ssh_user
- The default ssh user name to use.
ansible_ssh_pass
- The ssh password to use (this is insecure, we strongly recommendusing --ask-pass or SSH keys)
ansbile_sudo_pass
- The sudo password to use (this is insecure, we strongly recommendusing --ask-sudo-pass)
ansible_connection
- Connection type of the host. Candidates are local, ssh or paramiko.The default is paramiko before Ansible 1.2, and 'smart' afterwards which detects whether usage of 'ssh' would be feasible based on whether ControlPersist is supported
ansible_ssh_private_key_file
- Private key file used by ssh. Useful if using multiple keys and you don't want to use SSH agent.
ansible_shell_type
- The shell type of the target system. By default commands are formatted using 'sh'-style syntax by default. Setting this to 'csh' or 'fish' will cause commands executed on target systems to follow those shell's syntax instead.
ansible_python_interpreter
- The target host python path. This is useful for systems with more than one Python or not located at "/usr/bin/python" such as *BSD, or where /usr/bin/python is not a 2.X series Python. We do not use the "/usr/bin/env" mechanism as that requires the remote user's path to be set right and also assumes the "python" executable is named python,where the executable might be named something like "python26"
ansible_*_interpreter
- Works for anything such as ruby or perl and works just like ansible_python_interpreter.This replaces shebang of modules which will run on that host.
示例
[websrvs]
192.168.0.1 ansible_ssh_user=root ansible_ssh_pass=123456
192.168.0.2 ansible_ssh_user=root ansible_ssh_pass=123456
1
2
3
2
3
# 配置文件
路径:/etc/ansible/ansible.cfg 一般保持默认配置
vim /etc/ansible/ansible.cfg
1
defaults默认配置
- ansible在执行命令时,会将命令转换为python脚本生成在本地local_tmp,然后传递到远程服务器的临时目录remote_tmp
- 命令执行完成后,删除对应的python命令文件
- forks 表示并发执行的次数,同时可以给5台机器发送指令
[defaults]
#inventory = /etc/ansible/hosts # 主机列表配置文件
#library = /usr/share/my_modules/ # 库文件存放目录
#remote_tmp = $HOME/.ansible/tmp # 临时py命令文件存放在远程主机目录
#local_tmp = $HOME/.ansible/tmp # 本机的临时命令执行目录
#forks = 5 # 默认并发数,同时可以执行5次
#sudo_user = root # 默认sudo用户
#ask_sudo_pass = True # 每次执行ansible命令是否询问ssh密码
#ask_pass = True # 每次执行ansible命令是否询问ssh口令
#remote_port = 22 # 远程主机的端口号(默认22)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
建议优化项
- host_key_checking 如果开启,每次需要在
known_host
中先与其他主机建立一下链接的询问 - 默认情况下 ansible是不记录日志的,需要开启日志配置
host_key_checking = False # 检查对应服务器的host_key,建议取消注释
log_path = /var/log/ansible.log # 日志文件,建议取消注释
# 默认模块设置,目前默认模块使用command ,即 ansible all -m command -a xxx 等同于 ansible all -a xxx
module_name = command
1
2
3
4
5
2
3
4
5
Last Updated: 2022/05/22, 12:42:00