查看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 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