安装epel源
代码语言:javascript复制yum -y install epel-release
安装ansible
代码语言:javascript复制yum -y install ansible
查看版本
代码语言:javascript复制[root@localhost ~]# ansible --version
ansible 2.9.16
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Oct 30 2018, 23:45:53) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
添加ansible管理主机清单
代码语言:javascript复制vim /etc/ansible/hosts
使用playbook给两台主机安装nginx
- 实验环境
IP | 备注 |
---|---|
192.168.1.10 | host1 安装ansible |
192.168.1.20 | host2 |
两台机器做免密登录 host1
代码语言:javascript复制[root@host1 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:NzQ28djY97QKrWDuoD8YCGhG1gur2aXyMwK9qLWD5ds root@host1
The key's randomart image is:
---[RSA 2048]----
| . . |
| . B |
| o . B . .|
|.= .. o o.. o.|
| .o. Soo. . ..|
|= =. . o...o . |
|.B.. o. . . . |
| .Bo ...o |
|o.o=E..... |
----[SHA256]-----
[root@host1 ~]# ssh-copy-id -i 192.168.1.10
[root@host1 ~]# ssh-copy-id -i 192.168.1.20
修改ansible的hosts文件
代码语言:javascript复制[root@host1 ~]# vi /etc/ansible/hosts
末尾添加
[test]
192.168.1.10
192.168.1.20
编写yaml文件
代码语言:javascript复制[root@host1 ~]# cat nginx.yml
- hosts: test
remote_user: root
tasks:
- name: 安装yum源
shell: yum -y install epel-release
- name: install nginx
shell: yum -y install nginx
检查yaml文件的语法
代码语言:javascript复制[root@host1 ~]# ansible-playbook --syntax-check nginx.yml
playbook: nginx.yml
运行yaml文件
代码语言:javascript复制[root@host1 ~]# ansible-playbook nginx.yml
PLAY [test] ********************************************************************
TASK [Gathering Facts] *********************************************************
ok: [192.168.1.20]
ok: [192.168.1.10]
TASK [安装yum源] ******************************************************************
[WARNING]: Consider using the yum module rather than running 'yum'. If you
need to use command because yum is insufficient you can add 'warn: false' to
this command task or set 'command_warnings=False' in ansible.cfg to get rid of
this message.
changed: [192.168.1.20]
changed: [192.168.1.10]
TASK [install nginx] ***********************************************************
changed: [192.168.1.10]
changed: [192.168.1.20]
PLAY RECAP *********************************************************************
192.168.1.10 : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
192.168.1.20 : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[WARNING]警告选项不用管
测试是否能启动并访问
代码语言:javascript复制[root@host1 ~]# systemctl start nginx
[root@host2 ~]# systemctl start nginx
- host1
- host2