Ansible
1.安装:生产环境根据需求修改网卡、firewalld、selinux、配置软件源、时间服务器:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
systemctl restart network
#测试网络
ping www.baidu.com
#修改hosts文件
vi /etc/hosts
hostnamectl set-hostname Ansible-master
systemctl disable firewalld
systemctl stop firewalld
sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
yum install ntpdate
crontab -e
*/10 * * * * /usr/sbin/ntpdate time1.aliyun.com
#安装基础软件:
yum install -y wget yum-plugin-priorities
#安装软件源:
wget -O /etc/yum.repos.d/CentOS-Base-ali.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
#安装系统基础软件:
yum groupinstall "Compatibility Libraries" "Console Internet Tools" "Development Tools" "Security Tools" "System Administration Tools" -y
yum install -y vim lrzsz telnet curl net-tools tree bash-completion
#禁止内核升级
# vim /etc/yum.conf
...
exclude=kernel*
exclude=centos-release*
############配置完前面的基础配置,下面正式安装ansible软件############
1.这里使用rpm方式安装:
yum install -y ansible
查看ansible版本:
ansible --version
测试:
ansible localhost -a "ifconfig eth0"

2.配置通信主机hosts:
vi /etc/ansible/hosts
语法:
[web]
192.168.1.20
192.168.1.21
...
3.免密认证:
master中生成密钥(实验环境不用设置密码):
如果设置了密码,可以用一下命令重置密码:

ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.20
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.21
......
这里可以写个shell脚本执行:
for i in 21 22 23
do
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.$i
done
配置完测试连通性:
ansible all -m ping
ansible "*" -m ping
ansible "192.168.1.*" -m ping

4. 常用模块
4.1 日常模块:command、shell、script
command: ansible的默认模块,可以运行远程权限所有的shell命令
shell:command对于某些特殊的符号命令执行效果不好,专用的shell模块可以满足要求

scripts:批量的系统命令可以写成一个脚本文件,然后基于scripts的方式来运行,类似scp+shell的功能
4.2 系统模块:hostname、user、group、cron、setup
hostname:用来修改主机名

user:用户的增删改查
group:用户组的增删改查
cron:定制计划任务、禁用定时任务、启用定时任务、删除定时任务
setup:常见场景就是:获取指定的主机属性、获取某些主机属性等
4.3 文件模块: copy、fetch、file、stat
copy:文件纯拷贝、拷贝时改属性、拷贝时备份、根据内容增加文件等,本地到目标主机;
fetch:单文件拉取、多文件拉取等,它是从远程主机拉取文件到本地;
file:文件创建、设置属性、文件删除等;
stat:文件状态查看等;
4.4 应用模块:yum、service、debug
yum:检查软件、软件安装、软件卸载、安装本地软件、更新缓存等;

service:开机自启动管理、启动服务、重启服务、重载服务、关闭服务等;
debug:输出调试信息、测试变量等;
4.5 系列命令:
1 ansible-doc:一个专门用于查看模块信息的命令
2 ansible-glaxy:列出ansible的第三方共享资源的专用命令
语法:ansible-galaxy [delete|import|info|init|install|list|login|remove|search|setup] [--help] [options] ...
3 ansible-playbook:执行.yaml 文件相当于自动化的执行了大量的ansible命令;
yaml标记语言,这里playbook有三个属性:hosts、remote_user、tasks
4 ansible-vault:采用安全加密的方式来操作相关文件
5 ansible-console:可交互终端形式执行命令
6 ansible-pull:ansible普通执行方式的另一种表现形式,
7 ansible-inventory:ansible-inventory其实是获取主机清单一些的信息的专用命令
6.ansible参数:
-a Arguments,--args= Arguments’命合行参数
-m NAME,--module-name=NAME 执行模块的名字,默认使用cmmand模块,只执行单一命会可以不用-m参数
-i PATH,--inventory=PATH 指定库存主机文件的路,默认为/etc/ansible/hosts.
-u Username --user=Username 执行用户,使用这个远程用户名而不是当前用户
-U--sud-user=SUDO User sudo到哪个用户,默认为 root
-k--ask-pass 登录密码,提示输入SSH密码而不是假设基于密钥的验证
-K--ask-sudo-pass 提示密码使用sudo
-s --sudo sudo运行
s--su用su命令
-l --list 显示所支持的所有模块
-s --snippet 指定模块显示剧本片段
-f --forks=NUM 并行任务数。NUM被指定为一个整数,默认是5。#ansible testhosts -a"/sbin/reboot”-f 10 重启testhosts组的所有机器,每次重启10台
--private-key=PRIVATE KEY FILE 私钥路径,使用这个文件来验证连接
-v --verbose 详细信息
al1 针对hosts定义的所有主机执行
-M MODULE_PATH,--module-path=MODULE PATH 要执行的模块的路径默认为/usr/share/ansible
--list-hosts 只打印有哪些主机会执行这个 playbook 文件,不是实际执行该playbook文件
-o --one-line 压缩输出,摘要输出.尝试一切都在一行上输出。
-t Directory --tree=Directory 将内容保存在该输出目录,结果保存在一个文件中在每台主机上。 .-B后台运行超时时间
-P 调查后台程序时间
-T Seconds,--timeout=Seconds 时间,单位秒s
-P NUM,--poll=NUM 调查背景工作每隔数秒。需要 -b
-c Connection,--connection=Connection 连接类型使用。可能的选项是paramiko(SSH),SSH和地方。当地主要是用于crontab或启动。
--tags=TAGS 只执行指定标签的任务 例子:ansible-playbook test.yml --tags=copy 只执行标签为copy的那个任务
--list-hosts 只打印有哪些主机会执行这个playbook文件,不是实际执行该playbook文件
--list-tasks列出所有将被执行的任务
-C --check 检查yaml是否能正常执行而不会真正执行
-l SUBSET,--limit=SUBSET进一步限制所选主机/组模式 --limit=192.168.15.1只对这个ip执行
-skip-tags=SKIP_TAGS 只运行戏剧和任务不匹配这些值的标签-skip-tags=copy_start
-e EXTRA_VARS,--extra-vars=EXTRA_VARS 额外的变量设置为键=值或YAML /JSON
参数参考至此地址