Ansible-Playbook批量初始化服务器的实现过程

  


    <李>配置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批量初始化服务器的实现过程