将playbook.yml拆分,写到roles文件夹内,使文件变简单
一、建立roles文件夹,编写配置文件,安装apache
[devops@server4 ansible]$ mkdir roles
[devops@server4 ansible]$ vim ansible.cfg
#写入:
[defaults]
inventory= ./inventory
roles_path = ./roles
[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False
[devops@server4 ansible]$ cd roles/
[devops@server4 roles]$ ansible-galaxy init apache
[devops@server4 roles]$ \vi apache/tasks/main.yml ##使用\vi命令编辑时,粘贴不会错行
#写入:
- name: install httpd
yum:
name: httpd
state: present
- name: copy index.html
copy:
content: "{{ ansible_facts['hostname'] }}"
dest: /var/www/html/index.html
le 'keepali
- name: configure httpd
template:
src: httpd.conf.j2
dest: /etc/httpd/conf/httpd.conf
owner: root
group: root
mode: 644
notify: restart httpd
- name: start httpd and firewalld
service:
name: "{{ item }}"
state: started
loop:
- httpd
- firewalld
- name: configure firewalld
firewalld:
service: http
permanent: yes
immediate: yes
state: enabled
[devops@server4 roles]$ \vi apache/handlers/main.yml
#写入:
- name: restart httpd #触发器
service:
name: httpd
state: restarted
[devops@server4 roles]$ \vi apache/vars/main.yml
#写入:
---
http_host: "{{ ansible_facts['default_ipv4']['address'] }}"
http_port: 80
[devops@server4 roles]$ cd apache/templates
[devops@server4 templates]$ cp ../../../templates/httpd.conf.j2 . #复制配置文件到当前目录
[devops@server4 templates]$ cd ..
[devops@server4 apache]$ cd ..
[devops@server4 roles]$ cd ..
[devops@server4 ansible]$ vim inventory
#写入:
[test]
server5
[prod]
server6
[webserver:children]
test
prod
[devops@server4 ansible]$ vim apache.yml
#写入:
---
- hosts: webserver
roles:
- apache
[devops@server4 ansible]$ ansible-playbook apache.yml #执行
二、编写配置文件,安装haproxy
配置haproxy的步骤与配置apache的步骤一样,只需要将apache改成haproxy即可,注意所有主机都需要配置sudo,给devops用户权限,
注意此配置文件的编写:
三、配置keepalived
[devops@server4 ansible]$ cd roles/
[devops@server4 roles]$ ansible-galaxy init keepalived
[devops@server4 roles]$ cd keepalived/
[devops@server4 keepalived]$ rm -fr README.md tests/ #删掉不需要的文件
[devops@server4 keepalived]$ \vi tasks/main.yml
#写入:
---
- name: install keepalived
yum:
name: keepalived
state: present
- name: configure keepalived
template:
src: keepalived.conf.j2
dest: /etc/keepalived/keepalived.conf
notify: restart keepalived
- name: start keepalived
service:
name: keepalived
state: started
[devops@server4 keepalived]$ vim handlers/main.yml
#写入:
---
- name: restart keepalived
service:
name: keepalived
state: restarted
[devops@server4 keepalived]$ su -root #切换到超户
[root@server4 ~]# yum install keepalived -y #安装keepalive
[root@server4 ~]# su - devops #切回普通用户
[devops@server4 ~]$ cd ansible/roles/keeplived/templates/
[devops@server4 templates]$ cp /etc/keepalived/keepalived.conf . #复制keepalive配置文件到当前文件夹
[devops@server4 templates]$ mv keepalived.conf keepalived.conf.j2 #改名
[devops@server4 templates]$ vim keepalived.conf.j2 #编辑keepalive配置文件
#写入:
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state {{ STATE }}
interface eth0
virtual_router_id 28 #此数字不能和当前局域网内别的交换机的相同
priority {{ PRIORITY }}
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
}
virtual_ipaddress {
172.25.28.100
}
}
[devops@server4 templates]$ cd -
[devops@server4 ansible]$ vim inventory
#写入:
[lb]
server4 STATE=MASTER PRIORITY=100
server7 STATE=BACKUP PRIORITY=50
[test]
server5
[prod]
server6
[webserver:children]
test
prod
[devops@server4 ansible]$ vim roles/keeplived/vars/main.yml
#写入:
http_host: "{{ ansible_facts['default_ipv4']['address'] }}"
http_port: 80
[devops@server4 ansible]$ vim apache.yml
#写入:
---
- hosts: all
tasks:
- import_role:
name: apache
when: ansible_hostname in groups['webserver']
- import_role:
name: haproxy
when: ansible_hostname in groups['lb']
- import_role:
name: keepalived
when: ansible_hostname in groups['lb']
[devops@server4 ansible]$ ansible-playbook apache.yml #启动
配置完毕