Linux自动化运维工具Ansible的使用详细教程
一、什么是Ansible
Ansible是一种自动化工具,可以使用它来管理和配置计算机系统、部署应用程序和服务等。Ansible是开源的,类似于Chef和Puppet等工具,但与这些工具相比,Ansible更加简单易用,不需要在管理节点上安装客户端程序,只需要在被管理节点上安装一个Python解释器即可。另外,Ansible基于SSH连接执行任务,支持批量操作,并具有高度可扩展性和可配置性。因此,它成为了自动化运维领域中的热门工具之一。
二、安装Ansible
在CentOS系统中安装Ansible,只需要运行如下命令:
sudo yum install ansible -y
安装完成后,可以通过如下命令验证Ansible是否已经成功安装:
ansible --version
会显示如下信息:
ansible x.x.x
config file = /etc/ansible/ansible.cfg
configured module search path = ['/home/user/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3.6/site-packages/ansible
executable location = /usr/bin/ansible
python version = 3.6.8 (default, Nov 16 2020, 16:55:22) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
三、使用Ansible
1.编写Inventory文件
Inventory文件定义了被管理节点的信息,包括主机名、IP地址、登录用户、登录密码等等。例如,我们可以创建一个名为hosts.ini
的Inventory文件,内容如下:
[web]
192.168.10.10 ansible_ssh_user=root ansible_ssh_pass=123456
192.168.10.11 ansible_ssh_user=root ansible_ssh_pass=123456
在这里,[web]
表示定义一个名为web
的组,192.168.10.10
和192.168.10.11
是组中的两台主机,ansible_ssh_user
和ansible_ssh_pass
分别表示SSH登录用户名和密码。
2.编写Playbook文件
Playbook文件是Ansible配置任务的核心。它是一个以YAML格式编写的文件,包含了一系列的任务和标准化流程。例如,我们可以创建一个名为test.yml
的Playbook文件,内容如下:
- hosts: web
remote_user: root
tasks:
- name: install httpd
yum: name=httpd state=latest
- name: start httpd
service: name=httpd state=started
在这里,- hosts: web
表示这个Playbook中的任务将会在之前定义的web
组的所有主机上执行,remote_user: root
表示使用root账户执行任务。tasks
后面是一个任务列表,其中的每一个元素都是一个任务。name
表示任务的名称,在输出信息中显示。yum
表示将使用yum安装httpd
,service
表示启动httpd
服务。
3.执行Playbook
执行Ansible Playbook的命令是ansible-playbook
,例如,运行test.yml
的Playbook,可以使用如下命令:
ansible-playbook test.yml -i hosts.ini
在执行任务的过程中,会向目标主机发出SSH连接请求,如果被管理节点没有设置SSH登录权限,需要额外设置。
4.利用Ansible进行文件传输
Ansible还可以用来在远程主机之间传输文件。例如,我们可以尝试从本地主机将文件复制到远程主机上并更改权限。对于这个任务,我们需要将hosts.ini
中的目标主机定义为manager
,创建一个名为files
的文件夹,并在其中创建一个名为test.txt
的文件。
[manager]
192.168.10.10 ansible_ssh_user=root ansible_ssh_pass=123456
接下来,创建一个名为transfer.yml
的Playbook文件,内容如下:
- hosts: manager
remote_user: root
tasks:
- name: copy file
copy: src=files/test.txt dest=/root/test.txt mode=0644
在这里,copy
表示复制文件,src
表示源文件,dest
表示目标文件的路径和名称,mode
表示目标文件的权限。
最后,运行以下命令将文件复制到远程主机:
ansible-playbook transfer.yml -i hosts.ini
这个命令会将test.txt
文件复制到远程主机的/root/
目录下,并将其权限设置为0644。
四、总结
以上就是Ansible的使用简介,可以看到,Ansible具有优秀的自动化能力,配置简单,易于管理,还可以编写扩展模块来满足自己的需求。学会了Ansible的使用,可以实现服务器的多种自动化操作,简化运维工作,也成为了一名自动化运维工程师的利器。