Ansible学习笔记——配置Ansible

  

环境

  

系统环境:<代码> CentOS的Linux版本7.5.1804(核心)

  

ansible版本:<代码> ansible 2.9.0

  

ansible的配置

  

环境配置

  

Ansible配置以ini格式存储配置数据,在Ansible中几乎所有配置都可以通过Ansible的剧本或环境变量来重新赋值。在运行Ansible命令时,命令将会按照以下顺序查找配置文件。

  

(1) <代码> ANSIBLE_CONFIG: 首先,Ansible命令会检查环境变量,及这个环境变量指向的配置文件。

  

(2) <代码>。/ansible。cfg: 其次,将会检查当前目录下的ansible.cfg配置文件。

  

(3) <代码> ~/.ansible。cfg: 再次,将会检查当前用户家庭目录下的.ansible.cfg配置文件。

  

(4) <代码>/etc/ansible/ansible。cfg: 最后,将会检查在用软件包管理工具安装Ansible时自动产生的配置文件。

  

使用环境变量方式来配置

  

大多数的Ansible参数可以通过设置带有<代码> ANSIBLE_ 开头的环境变量进行配置,参数名称必须都是大写字母,如下配置:

  

<代码> export ANSIBLE_SUDO_USER=根

  

设置了环境变量之后,<代码> ANSIBLE_SUDO_USER>   

设置ansible.cfg配置参数

  

Ansible有很多配置参数,以下是几个默认的配置参数:

  
 <代码>库存=/root/ansible/hosts
  图书馆=/usr/share/my_modules/叉=5
  sudo_user=根
  remote_port=22
  host_key_checking=False
  超时=20
  log_path=/var/log/ansible.log  
  

对上面的参数进行说明:

  

& lt; 1比;库存:<代码> 该参数表示存货文件的位置,资源清单(库存)就是Ansible需要连接管理的一些主机列表。

  

& lt; 2比;<代码>库: Ansible的所有操作都使用模块来执行实现,这个图书馆参数就是指向存放Ansible模块的目录。

  

& lt; 3比;<代码>叉:设置默认情况下Ansible最多能有多少个进程同时工作,默认5个进程并行处理。具体需要设置多少个,可以根据控制端性能和被管理节点的数量来确定。

  

& lt; 4比;<代码> sudo_user: 设置默认执行命令的用户,也可以在playbo o k中重新设置这个参数。

  

& lt; 5比;<代码> remote_port: 指定连接被管理节点的管理端口,默认是22日,除非设置了特殊的SSH端口,否则不需要修改此参数。

  

& lt; 6比;<代码> host_key_checking: 设置是否检查SSH主机的密钥。可以设置为真或假。即SSH的主机再次验证。

  

& lt; 7比;<代码>超时:设置SSH连接的超时间隔,单位是秒。

  

& lt; 8比;<代码> log_path: Ansible默认不记录日志,如果想把Ansible系统的输出记录到日志文件中,需要设置log_path。需要注意,模块将会调用被管节点的(r) syslog来记录,执行Ansible的用户需要有写入日志的权限。

  

SSH互信配置

  

将ansible服务器的ssh公钥分发到各被管节点上。

  

指定ssh公钥生成格式和存放路径:<代码> ssh - keygen rsa - t - f/tmp/temp/id_rsa - n”

  

ssh公钥分发目标机:<代码> ssh-copy-id root@192.168.246.204

  

也可以使用ansible自身来批量添加密钥到被控节点上。使用ansible的authorized_key模块即可。

  

以下是借助期望工具实现非交互式的年代年代h - co . py - id,免得总是询问远程用户的登录密码。

  
 <代码> #安装
  yum安装- y期望 
  
 <代码> #编辑期望脚本
  猫auto_sshcopyid.exp
  # !/usr/bin/期望
  设置超时10
  设置user_hostname lindex $ argv [0]
  设置密码lindex $ argv [1]
  产卵ssh-copy-id user_hostname美元
  预计{
  ”(是/否)?”
  {
  发送“是的\ n”
  预计“*密码:“{发送" $密码\ n "}
  }
  *密码:“{发送" $密码\ n "}
  }
  预计eof  
  
 <代码> #编辑调用期望的sehll脚本
  # !/bin/bash
  #加载系统函数库
  。/etc/init.d/functions
  
  ip=$ (echo - n " $ (seq - s”、“59 61), 187年“| xargs - d”、“我呼应192.168.246。{})
  密码=八璧摹?
  因为我在$ ip
  做
  ping - c 1美元比;/dev/null
  
  如果[(echo $ ?)情商0美元);/tmp/temp/auto_sshcopyid。exp root@我密码和美元在比;/tmp/temp/a.log/bin/true行动”美元我可以”
  其他的
  行动”美元我没有!”/bin/false
  fi
  

Ansible学习笔记——配置Ansible