嗨,今天我们来看看名为Ansible的系统管理自动化工具。这类工具有很多,但Ansible不同于无代理。是的,你读对了,它没有客户端,是用python语言开发的。Ansible架构非常简单,它由一个必须是Linux的管理器和一个可能是Linux、BSD或Windows的管理系统组成。windows有一些不同之处,但安装Ansible后这不是问题。所有系统都以相同的方式管理。在Linux和BSD中,通过ssh建立连接,但在windows RMI协议中。
安装Ansible
首先我们使用fedora作为管理器,我们应该只在这个系统上安装ansible。下面的命令在管理器上安装ansible
Ubuntu、Debian、Mint、Kali
$ sudo apt install ansible

软呢帽、CentOS、RHEL
$ sudo yum install ansible -y
无密码连接
然后创建ssh id,如果它不存在的话。我们可以跳过密钥生成问题而不给出任何值。
$ ssh-keygen

然后我们将使用ssh id copy命令将密钥安装到远程管理系统。现在我们可以用一种简单的方式使用ansible了。
$ ssh-copy-id [email protected]
资源清册和主机
Ansible使用其主机名为Inventory的文件来获取有关远程系统的信息。我们可以在此清单文件中对主机进行分组。将此主机(192.168.122.165)添加到添加主机资源清册。在这里 myex
是一个包含下列主机的组名。现在,我只添加一个主机
$ sudo vim /etc/ansible/hosts[myex]192.168.122.165

Ping主机并检查连接
现在我们可以用ansible了。我们使用ping模块 -m
选项并指定组名。我们可以对所有库存主机使用all。
$ ansible myex -m ping

运行特别命令
我们可以指定在远程系统上运行的纯命令 -a
选项。临时命令使我们能够在远程系统上运行命令。在本例中,我们将打印 passwd
文件 cat
命令。
$ ansible myex -a "cat /etc/passwd"

调试可解析和详细输出
如果我们需要调试Ansible工作,我们可以使用 -vvv
选项,其中v的计数决定调试级别。正如您在下面看到的,连接用户名和远程模块被指定,然后ssh连接使用指定的参数进行。如果ssh连接有问题,您可以在这里找到有关该问题的详细信息。可译动词有EXEC、PUT等。
$ ansible myex -a "cat /etc/passwd" -vvv

在远程系统上运行Sudo
我们可以在远程系统上使用sudo特权 --sudo
并用–sudo user指定sudo user。
$ ansible myex -a "/bin/cat /etc/passwd" --sudo
易变结构
因为Ansible使用ssh,我们可以通过在下面的行中取消注释来禁用ssh主机密钥检查。
$ sudo vim /etc/ansible/ansible.cfg# additional paths to search for roles in, colon separated#roles_path = /etc/ansible/roles# uncomment this to disable SSH key host checkinghost_key_checking = False# change this for alternative sudo implementations
有时有很多系统来管理和运行命令。我们可以使ansible的工作与 -f
选项
$ ansible all -a "ls ~ismail" --sudo -f 10
相关文章: 如何用Puttygen生成Putty键?