linux 自动化运维工具ansible的使用详细教程

  • Post category:Linux

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.10192.168.10.11是组中的两台主机,ansible_ssh_useransible_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安装httpdservice表示启动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的使用,可以实现服务器的多种自动化操作,简化运维工作,也成为了一名自动化运维工程师的利器。