查看Ansible的版本

执行以下命令:

$ ansible --version

如何在Ubuntu Linux上安装和配置最新版本的Ansible

配置PPA。

执行以下apt-get命令或apt命令:

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install software-properties-common

将ppa:ansible/ansible添加到您的系统中软件来源:

$ sudo apt-add-repository ppa:ansible/ansible

更新存储库:

$ sudo apt update

安装最新版本的ansible:

$ sudo apt install ansible
在Ubuntu Linux上如何安装和配置最新版本的Ansible

在Ubuntu Linux 16.04/18.04 LTS,17.10/18.10上,怎样安装Ansible?
如何在Ubuntu上部署Ansible?

创建hosts文件

Ansible使用hosts来保存远程服务器的名称或者IP地址。
默认文件是/etc/ansible/hosts。
可以直接编辑这个文件,或者创建一个新host文件:

$ sudo vi /etc/ansible/hosts

或者

$ vi $HOME/hosts

添加服务器的IP或者主机名

[webservers]
server1.onitroad.local
171.22.11.18
171.22.11.19

[devservers]
10.9.73.88
10.9.73.87
10.9.73.86

设置SSH密钥

配置本地和远程服务器之前的ssh密钥:

在本地Ubuntu上执行:

$ ssh-keygen -t rsa -b 4096 -C "My ansisble key"

将您的公钥文件复制到远程服务器上(即刚才在hosts中配置的服务器)

$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub root@server1.onitroad.local
$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub root@171.22.11.18
$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub root@171.22.11.19
$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub root@10.9.73.86
$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub root@10.9.73.87
$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub root@10.9.73.88
$ eval $(ssh-agent)
$ ssh-add

现在,ansible可以使用ssh命令连接到所有远程服务器。

将ping请求发送到所有服务器

只需执行以下命令:

$ ansible -i ~/hosts -m ping all

输出示例:

10.9.73.86 | SUCCESS => {
    "changed": false, 
    "failed": false, 
    "ping": "pong"
}
10.9.73.87 | SUCCESS => {
    "changed": false, 
    "failed": false, 
    "ping": "pong"
}
10.9.73.88 | SUCCESS => {
    "changed": false, 
    "failed": false, 
    "ping": "pong"
}

查看所有远程服务器的运行时间

$ ansible -i hosts -m shell -a 'uptime' all

输出示例:

do-de.public | SUCCESS | rc=0  
10:37:02 up 1 day,  8:39,  1 user,  load average: 0.95, 0.27, 0.12
 
do-blr-vpn | SUCCESS | rc=0 
16:07:11 up 1 day,  8:43,  1 user,  load average: 0.01, 0.01, 0.00
 
ln.gfs01 | SUCCESS | rc=0  
10:37:17 up 22 days,  5:30,  1 user,  load average: 0.18, 0.12, 0.05

其中

  • -i/hosts:指定主机路径。您可以设置shell变量来跳过-i选项。例如:export ANSIBLE_HOSTS =~/hosts
  • -m shell:要执行的模块名称,例如shell,apt,yum等。
  • -a'uptime':模块参数。例如,shell模块将接受Unix/Linux命令名称。 apt模块接受使用apt-get/apt命令等
  • all:所有表示所有主机。您可以指定组名称,例如devservers或者某个远程服务器

使用apt模块更新所有Debian/Ubuntu服务器

运行以下命令:

$ ansible -i ~/hosts -m apt -a 'update_cache=yes upgrade=dist' dbservers

编写playbook

我们可以使用playbook来指定在每个远程服务器上执行的操作。
playbook是yml格式。

创建一个文件update.yml:

---
- hosts: dbservers
  tasks:
          - name: Updating host using apt
            apt:
                    update_cache: yes
                    upgrade: dist

创建hosts文件

[all:vars]
# ssh登录的用户名
ansible_user='jack'

# 是否使用root身份运行命令
ansible_become='yes'

# 如何变成root用户
ansible_become_method='sudo'

# sudo的密码
ansible_become_pass='加密的密码' 
# ansible_become_pass='{{ my_sudo_password }}' 

#ansible_python_interpreter='/usr/bin/env python3' 指定远程服务器使用的python版本
[dbservers]
10.9.73.86
10.9.73.87
10.9.73.88

然后执行playbook

$ ansible-playbook -i ~/hosts update.yml
日期:2020-03-23 08:03:53 来源:oir作者:oir