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 [email protected](被管理机IP)
[root@server ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
/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
[email protected]'s password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '[email protected]'"
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
}
搭建完成了。
官方操作介绍链接