转载:ansible总结 - 简书
ansible是自动化运维工具,基于python开发。
实现了批量系统配置,批量程序部署,批量运行命令等功能。
ansible是基于模块工作的,本身没有批量部署的能力。
yum安装方式
yum install -y epel-release
yum -y install ansible
pip安装方式
pip install ansible
ansible-doc –h 查看帮助文档
ansible-doc –l 显示所有模块
ansible –vvv 显示执行过程,可以用来查看错误地方,进行排错
ANSIBLE_CONFIG
指向的路径文件(export ANSIBLE_CONFIG=/etc/ansible.cfg
);~/.ansible.cfg
,检查当前目录下的ansible.cfg配置文件;/etc/ansible.cfg
检查etc目录的配置文件。/etc/ansible.cfg
inventory = /etc/ansible/hosts #这个参数表示主机清单inventory文件的位置
library = /usr/share/ansible #指向存放Ansible模块的目录,支持多个目录方式,只要用冒号(:)隔开就可以
forks = 5 #并发连接数,默认为5
sudo_user = root #设置默认执行命令的用户
remote_port = 22 #指定连接被管节点的管理端口,默认为22端口,建议修改,能够更加安全
host_key_checking = False #设置是否检查SSH主机的密钥,值为True/False。关闭后第一次连接不会提示配置实例
timeout = 60 #设置SSH连接的超时时间,单位为秒
log_path = /var/log/ansible.log #指定一个存储ansible日志的文件(默认不记录日志)
ansible可同时操作属于一个组的多台主机组和主机之间的关系通过inventory文件配置,默认的文件路径为/etc/ansible/hosts。
除默认文件外,还可以同时使用多个inventory文件 ansible –i
inventory文件遵循INI文件风格
ansible_ssh_host # 远程主机
ansible_ssh_port # 指定远程主机ssh端口
ansible_ssh_user # ssh连接远程主机的用户,默认root
ansible_ssh_pass # 连接远程主机使用的密码,在文件中明文,建议使用--ask-pass或者使用SSH keys
ansible_sudo_pass # sudo密码, 建议使用--ask-sudo-pass
ansible_connection # 指定连接类型: local, ssh, paramiko
ansible_ssh_private_key_file # ssh 连接使用的私钥
ansible_shell_type # 指定连接对端的shell类型, 默认sh,支持csh,fish
ansible_python_interpreter # 指定对端使用的python编译器的路径
ansible
-m : 要使用的模块,默认为command
-a : 要执行的命令
-i filename 指定hosts文件 默认为etc/ansible/hosts
-u :ssh连接的用户名,默认root
-k :提示输入ssh登录密码。当使用密码验证的时候用
-s : sudo运行
-U :sudo到那个用户,默认为root
-f :fork多少个进程并发处理,默认为5个
-i :指定hosts文件路径,默认default=/etc/ansible/hosts
-I :指定pattern,对
-M :要执行的模块路径,默认为/usr/share/ansible
-o:压缩输出,摘要输出
--private-key :私钥路径
将管理机的公钥复制到客户端的authorized_keys文件中
chmod -R 700 ~/.ssh
将客户端的ip添加到hosts文件中
或者添加到其他文件中,可以使用ansible –i 指定此文件
原因:python库中urllib3 (1.22) or chardet (2.2.1) 的版本不兼容
解决:
pip uninstall urllib3
Permissions 0755 for '/root/.ssh/id_rsa' are too open
~/.ssh目录权限太高,给700就可以