a、 ansible软件自动化环境架构规划(服务端:yum install -y ansible 客户端:无需任何安装操作)

  管理主机1台:
  10.0.0.61   m01
  受控主机3台:
  10.0.0.41   backup
  10.0.0.31   nfs01
  10.0.0.7    web01
  Linux系统 6.9

b、ansible软件自动化部署条件

  建议基于ssh密钥方式建立远程连接
  a ssh密钥对创建(管理主机)
    ssh-keygen -t dsa
	影响免交互创建密钥对创建因素:
	1)需要指定私钥存放路径
	   -f /root/.ssh/id_dsa
	2)需要进行私钥文件密码设定
	   -N/-P  
	   -N ""/-P ""
	
	免交互创建密钥对方法
	ssh-keygen -t dsa -f /root/.ssh/id_dsa -N ""
	
  b 分发公钥文件(管理主机进行分发)
    ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.31
	注:当端口不是22时, ssh-copy-id -i /root/.ssh/id_dsa.pub "172.16.1.31  -p52113"  
	格式解释说明://只所以是"172.16.1.31 -p52113",是shift的原因。
	#!/bin/bash
	until [ $# -eq 0 ]
	do
	echo $*
	shift
	done
	
	影响免交互批量分发密钥因素
	1)需要有确认连接过程,需要输入yes/no
	   -o StrictHostKeyChecking=no(不要再进行询问我了)
	   sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no 172.16.1.31"
	
	2)需要解决密码问题
	   sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.31     注意:sshpass需要yum安装
       Now try logging into the machine, with "ssh '172.16.1.31'", and check in:
       
         .ssh/authorized_keys
       
       to make sure we haven't added extra keys that you weren't expecting.
	
	免交互批量分发公钥脚本:
    #!/bin/bash
    rm /root/.ssh/id_dsa
    ssh-keygen -t dsa -f /root/.ssh/id_dsa -N ""
    
    for ip in 31 41 7
    do
    sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no 172.16.1.$ip"
    done		
c 检查是否可以进行基于密钥远程管理
	ssh 172.16.1.31 uptime
	免交互批量检查测试脚本

c、ansible软件下载安装

  ansible管理主机软件安装:
  yum install -y ansible      //ansible是在epel源中
  ansible受控主机软件安装:(可选)
  yum install -y libselinux-python 
	注:安装了libselinux-python软件,即使客户端开启selinux,也不会影响使用

d、ansible软件受控主机添加配置

  cat /etc/ansible/hosts
  [oldboy]
  172.16.1.7
  172.16.1.31
  172.16.1.41
  测试方法:
  ansible oldboy -m command -a "hostname"
 172.16.1.31 | SUCCESS | rc=0 >>
  nfs01
 172.16.1.41 | SUCCESS | rc=0 >>
  backup
 172.16.1.7 | SUCCESS | rc=0 >>
  web01

备注:基于ssh口令方式建立远程连接(也可以)
		vim /etc/ansible/hosts
		[oldboy]
		172.16.1.7
		172.16.1.31 ansible_user=root ansible_password=123456
		172.16.1.41

		ansible 172.16.1.31 -m command -a "hostname" -k     --- 实现口令交互式远程管理(这是指在/etc/ansible/hosts文件中没有存密码,用-k来实现密码交互)
		SSH password: 
		172.16.1.31 | SUCCESS | rc=0 >>
		 nfs01