- <李>配置ssh密钥认证李> <李>远程配置主机名李> <>李控制远程主机互相添加主机解析李> <李>配置远程主机的百胜源以及一些软件李> <李>时间同步配置李> <>李关闭selinux/iptables李> <>李修改sshd配置李>
配置ssh密钥认证
- <李>在主控节点的<代码> 代码>/etc/ansible/主机配置节点李>
<代码> vim/etc/ansible/hosts美元 (新) 192.168.56.12 192.168.56.13 代码>
在控制节点配置到受控节点的ssh认证方式
<代码> #主控节点执行 ssh - keygen - t rsa - f ~/美元。ssh/id_rsa - n & # 39; & # 39; 美元在192.168.56主机。{11 . . 12};做 美元- keyscan主机在祝辞~/sh/hnow_hosts 2比;/dev/null sshpass - p & # 39; 123456 & # 39;ssh-copy-id root@主机和美元比;/dev/null 代码完成>
将上面的方案剧本化:
<代码> - - - - - - ——名称:配置ssh连接 主持人:新 gather_facts:假的 ,任务: ,-名称:配置ssh连接 ,,壳牌:| ,,,,,- keyscan {{inventory_hostname}}祝辞祝辞~/. ssh/know_hosts ,,,,,sshpass - p & # 39; 123456 & # 39;ssh-copy-id root@ {{inventory_hostname}} 代码>
ansible命令执行模块
以下的四个模块不满足幂等性
- <李>命令:执行简单的壳命令李> <李>壳:和命令相同,但支持管道富豪李> <李>生:执行底层壳命令,通常在目标主机上安装python时才使用这个模块李> <李>脚本:在远程主机上执行脚本李>
以下命令具备幂等性:
- <李>创建:当指定的文件或者目录不存在时执行,存在不执行李> <李>删除:当指定的文件或者目录不存在时不执行,存在执行李>
<代码> - - - - - - ——名称:模块使用 主持人:新 gather_facts:假的 ,任务: ,,名称:使用shell模块 ,,,,外壳:/etc/my.cnf cp/tmp/my . cnf中所做 ,,,,参数: ,,,,创建:/etc/my.cnf ,,名称:exec perl脚本 ,,,,脚本:/opt/script.pl ,,,,参数: ,,,,,perl可执行文件:代码>
重点
- <李>连接:连接方式(智能| ssh | paramiko当地| |码头工人| winrm),默认为智能表示只能选择ssh或者paramiko李> <李> delegate_to:只能定义在任务级别上,效果和连接相似李>
<代码> - - - - - - ——名称:play1 主持人:zabbix gather_facts:假的 ,任务: ,-名称:任务1 ,,,调试: ,,,,味精:“执行task" {{inventory_hostname}}; ,,代码,delegate_to: localhost >
authorized_key模块
特点:
- <李>分发ssh公钥李> <李>不负责主机认证阶段
前提需要配置好主机下的ansible_passwd字段
<代码>(新) 192.168.56.11 ansible_hostname=癱entos7-node1" 192.168.56.12 ansible_hostname=癱entos7-node2" (新:var) ansible_password=皔eecallk8s" 代码>
分发认证配置
李><代码> - - - - - - 名称:“配置ssh connection" 主持人:新 gather_facts:假的 ,任务: ,,- authorized_key: ,,,,关键:“{{查找(& # 39;文件# 39;& # 39;~/. ssh/id_rsa . pub # 39;)}}, ,,,状态:礼物 ,,,代码,用户:根>
外部数据读取的方式:
- <李>查找():支持从文件,复述,etcd,烟斗,var,列表,dict
- <李> fileglob:支持统配文件名,文件指定文件,管从命令执行结果中返回数据李>
<代码> - - - - - - 名称:“fileglob task"和文件; 主持人:新 gather_facts:假的 ,任务: ,-名称:task1 ,,,调试: ,,,,味精:“文件名:{{查找(& # 39;fileglob& # 39; & # 39;/etc/* . conf # 39;)}}, ,名称:task2 ,,,调试: ,,,,味精:“filecontent:{{查找(& # 39;文件# 39;& # 39;/etc/主机# 39;)}}代码>
- <李>查询():统配文件读取,返回格列表式李>
<代码> - - - - - - 名称:“fileglob query"和文件; 主持人:新 gather_facts:假的 ,任务: ,,-名称:“fileglob" ,,,调试: ,,,,味精:“fileglob{{查找(& # 39;fileglob& # 39; & # 39;/etc/* . conf # 39;)}}, ,,-名称:“fileglob wantlist" ,,,调试: ,,,,味精:“fileglob wantlist{{查找(& # 39;fileglob& # 39; & # 39;/etc/* . conf # 39;, wantlist=True)}}, ,,-名称:“query" ,,,调试: ,,,,味精:“查询{{q (& # 39; fileglob& # 39; & # 39;/etc/* . conf # 39;)}}“代码>
设置主机名
使用的是主机名模块,会直接修改/etc/主机名配置文件
<代码> - - - - - - ——名称:设置主机名 主持人:新 gather_facts:假的 ,var: ,,主机名: ,,主持人:192.168.56.13 ,,,名称:centos7-node3 ,,主持人:192.168.56.14 ,,,名称:centos7-node4 ,任务: ,——名称:主机名 ,,,主机名: ,,,,名字:“{{item.name}}, ,,当:条目。主机==inventory_hostname ,,,循环:“{{主机名}}“Ansible-Playbook批量初始化服务器的实现过程