Ansible的安装部署与使用

Ansible的安装部署与使用

介绍:

ansible是一种自动化运维工具,它是基于python语言的。可以实现批量系统配置、批量程序部署、批量运行命令等功能。
ansible是基于模块工作的,本身没有批量部署的能力,真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架,是基于ssh来和远程主机通讯的。

  1. 只需要在控制端主机安装,被控制端无需安装
  2. 被控制端只需要开启ssh服务,Python环境

配置:

1)配置epel源

centos是redhat的开源版本,不具有repo,yum的功能,所以需要安装epel,使得其具有yum功能。
wget文件下载命令(wget的rpm包下载地址www.rpmfind.net)

[root@ansible ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@ansible ~]# yum clean all    #清理缓存再安装
[root@ansible ~]# yum makecache    #就是把服务器的包信息下载到本地电脑缓存起来
2)安装ansible
[root@ansible ~]# yum -y install ansible
3) 查看ansible版本
[root@ansible ~]# ansible --version
ansible 2.8.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Aug  4 2017, 00:39:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]
4)生成密钥

创建密钥实现无密码连接

[root@ansible ~]# ssh-keygen -f /root/.ssh/id_rsa -N ‘’

在这里插入图片描述
-f 指定用来保存密钥的文件名(文件名id_rsa)
-N 提供新密码,空表示不需要密码 -N ‘’(单引号)

[root@ansible ~]# for i in node1 node2 do ssh-copy-id $i done   

使用for循环将密钥传给被控制端的主机

[root@ansible ~]# ssh-keygen
[root@ansible ~]# ssh-copy-id root@IP
5) 定义主机清单
[root@ansible ~]# vim /etc/hosts
192.168.16.130 control
192.168.16.131 node1
192.168.16.132 node2
[root@ansible ~]# vim /etc/ansible/hosts

[webserver]
192.168.1.31 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123456"
6)进行测试
ansible 192.168.80.135 -m ping
7)批量给用户创建账号,密码
[root@ansible ansible]# ansible -i hosts webserver -m command -a "useradd zhangsan"
-i 指定hosts文件路径,默认default=/etc/ansible/hosts
webserver                            ---主机组
-m            ---要执行的模块,默认为command
command                              ---模块名称
-a           ---指定利用模块执行的动作参数,-a后面的是要执行的命令
useradd zhangsan                     ---批量执行的命令
-k          ---使用密码远程
Ansible ad-hoc可以通过命令行形式远程管理其他主机(适合执行一些临时性的简单任务)

-m 指定应该什么模块(默认为command模块)
8)ansible 192.168.16.131 -m ping -k

批量显示远程主机的网卡信息
9)ansible webserver -m command -a "ifconfig"

批量切换到远程主机的/tmp目录下,创建host01这个文件
10) ansible webserver -m command -a "chdir=/tmp touch host01"

批量判断远程主机/tmp下有没有hosts01这个文件,如果有就skip(跳过),没有就执行后面的命令
11) ansible webserver -m command -a "creates=/tmp/hosts01 touch hosts01"

批量判断判断远程主机/tmp下有没有hosts01这个文件,如果有就执行后面的命令,没有就skip(跳过)
12) ansible webserver -m command -a "removers=/tmp/hosts01 touch /tmp/123.txt"

问题:

13)ssh-copy-id秘钥分发报错

重装了操作系统,本机/root/.ssh/known_hosts文件存在着上一次分发记录,所以导致以下报错

[root@ansible ~]# ssh-copy-id [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed

/usr/bin/ssh-copy-id: ERROR: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ERROR: @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
ERROR: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ERROR: IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
ERROR: Someone could be eavesdropping on you right now (man-in-the-middle attack)!
ERROR: It is also possible that a host key has just been changed.
ERROR: The fingerprint for the ECDSA key sent by the remote host is
ERROR: SHA256:VK3OAQJiLsUM+G2RAb0iJ9HiCFAVw1UOc+5DDshb57w.
ERROR: Please contact your system administrator.
ERROR: Add correct host key in /root/.ssh/known_hosts to get rid of this message.
ERROR: Offending ECDSA key in /root/.ssh/known_hosts:17
ERROR: ECDSA host key for 192.168.1.107 has changed and you have requested strict checking.
ERROR: Host key verification failed.

解决办法

[root@ansible ~]# ssh-keygen -R 192.168.16.131    

再次秘钥分发即可免密登录

[root@ansible ~]# ssh-copy-id [email protected]    

14) 列出所有模块

[root@ansible ~]# ansible-doc -l  

他山之石,可以攻玉。

你可能感兴趣的:(Linux运维,运维,linux,centos)