ansible——简单的自动化IT工具。

Ansible 是一个简单,强大且无代理的自动化语言。
Ansible 的好处:
简单易读:基于 YAML 文本编写,易于阅读,非专业的开发人员也可以编写。
功能强大:它可以同于管理配置,软件安装,流程自动化
无代理:不需要在客户端安装额外的 agent
跨平台支持:支持 linux,Windows,Unix 和网络设备

Ansible 典型的工作方式是通过一个脚本文件(基于 YAML 格式构建的)去控制远端操作系统按照特定的顺序执行相关任务,我们称这个文件为 playbook;

Ansible 架构中拥有两种计算机类型,即控制节点和受控节点。Ansible 运行在控制节点上,并且只能运行在 linux 操作系统上,对于被控节点,可以是主机设备,也可以是网络设备,主机设备的操作系统,可以是 Windows,也可以是 linux。

Ansible跟其他IT自动化技术的区别在于其关注点并非配置管理、应用部署或IT流程工作流,而是提供一个统一的界面来协调所有的IT自动化功能,因此Ansible的系统更加易用,部署更快。

Ansible可以让用户避免编写脚本或代码来管理应用,同时还能搭建工作流实现IT任务的自动化执行。IT自动化可以降低技术门槛及对传统IT的依赖,从而加快项目的交付速度。

安装基础准备:

使用VMware软件创建两台centos7的主机server和db1,
关闭selinux、防火墙,能ping通外网,root用户下进行。

主机

ip

server

192.168.200.128

db1

192.168.200.129

在CentOS7上安装:
server的主机安装ansible

yum install epel-release
yum install ansible

查看版本信息可以看到配置文件路径

[root@server ~]# ansible --version
ansible 2.9.27
  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  7 2019, 00:51:29) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]

ansible提供的默认主机配置文件

[root@server ansible]# ls -l /etc/ansible/
总用量 24
-rw-r--r-- 1 root root 20053 5月  26 23:19 ansible.cfg
-rw-r--r-- 1 root root  1032 5月  26 23:21 hosts
drwxr-xr-x 2 root root     6 1月  16 05:55 roles

ansible配置文件有下列:
ansible.cfg :ansible执行需求的全局性,默认的主配置文件
hosts : 默认的主机清单文件
roles : 角色文件

ansible读取配置文件的优先级:

ANSIBLE_CONFIG
./ansible.cfg
~/ansible.cfg
/etc/ansible/ansible.cfg

有两个模块:defaults 和privilege_escalation。
defaults 模块:
inventory: 指定清单文件路径
host_key_checking : 是否检查主机 key 是否可信
remote_user: 远程连接时使用的用户,默认使用当前用户
ask_pass: 连接时是否询问输入密码(如果没有配置密钥登录,需要配置该选项为 true。)
privilege_escalation 模块:sudo 提权相关的配置
become: 是否开启切换用户
become_method: 如何切换用户
become_user: 切换到那个用户
become_ask_pass: 是否提示输入密码

在/etc/ansible/hosts最后添加db1的ip

[root@server ~]# tail -n1 /etc/ansible/hosts 
192.168.200.129

列出远程主机

[root@server ~]# ansible all --list-hosts
  hosts (1):
    192.168.200.129

生成公钥私钥(一直回车)

[root@server ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:rVKyJX7VlIG+IY83RM8q0aoDizB3T7w3xi7kQe3zRW0 root@server
The key's randomart image is:
+---[RSA 2048]----+
|           ..    |
|          o  o   |
|       . + oo.   |
|      . +.=o+ E  |
|     oo.SBo=..   |
|o . o.=**o* .    |
| + o B+=o= o     |
|  . . Bo= .      |
|       *..       |
+----[SHA256]-----+

.ssh文件下生成了公钥私钥

[root@server .ssh]# ll
总用量 12
-rw------- 1 root root 1675 5月  27 00:20 id_rsa
-rw-r--r-- 1 root root  393 5月  27 00:20 id_rsa.pub
-rw-r--r-- 1 root root  177 5月  26 22:26 known_hosts

发送公钥到db1
ssh-copy-id -i root@192.168.200.129(被管理机IP)

[root@server ~]# ssh-copy-id  -i  /root/.ssh/id_rsa.pub  root@192.168.200.129
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.200.129 (192.168.200.129)' can't be established.
ECDSA key fingerprint is SHA256:H96PPXncbcheD/EVfRsiEfDie/1aPDfzIQP/ttZDrHs.
ECDSA key fingerprint is MD5:ed:de:24:e7:ef:56:5c:0e:f9:ef:83:21:53:0b:54:c1.
Are you sure you want to continue connecting (yes/no)? y
Please type 'yes' or 'no': yes
/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: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.200.129's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.200.129'"
and check to make sure that only the key(s) you wanted were added.

查看db1的.ssh

[root@db1 .ssh]# ll
总用量 4
-rw------- 1 root root 393 5月  27 00:22 authorized_keys

使用ansible命令查看db1的情况

[root@server ansible]# ansible db1 -m command  -a 'df -h'
192.168.200.129 | CHANGED | rc=0 >>
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 979M     0  979M    0% /dev
tmpfs                    991M     0  991M    0% /dev/shm
tmpfs                    991M  9.6M  981M    1% /run
tmpfs                    991M     0  991M    0% /sys/fs/cgroup
/dev/mapper/centos-root   17G  1.4G   16G    8% /
/dev/sda1               1014M  136M  879M   14% /boot
tmpfs                    199M     0  199M    0% /run/user/0

传输文件到db1

[root@server ansible]# cd
[root@server ~]# touch test.txt
[root@server ~]# ll
总用量 4
-rw-------. 1 root root 1219 5月  26 00:23 anaconda-ks.cfg
-rw-r--r--  1 root root    0 5月  26 22:28 test.txt
[root@server ~]# ansible db1 -m copy -a 'src=/root/test.txt dest=/tmp/ mode=755 owner=root'
192.168.200.129 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": true, 
    "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", 
    "dest": "/tmp/test.txt", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "d41d8cd98f00b204e9800998ecf8427e", 
    "mode": "0755", 
    "owner": "root", 
    "size": 0, 
    "src": "/root/.ansible/tmp/ansible-tmp-1653575391.77-9739-177291467703809/source", 
    "state": "file", 
    "uid": 0
}

搭建完成了。
官方操作介绍链接