要在三台服务器上使用 Ansible Playbook 部署 Keepalived,你可以按照以下步骤创建目录和文件结构,并编写相应的任务和配置文件。
目录结构
├── ansible.cfg
├── inventory
├── roles
│ ├── keepalived-common
│ │ ├── tasks
│ │ │ └── main.yml
│ ├── keepalived-master
│ │ ├── tasks
│ │ │ └── main.yml
│ │ ├── templates
│ │ │ └── keepalived.conf.j2
│ ├── keepalived-backup
│ │ ├── tasks
│ │ │ └── main.yml
│ │ ├── templates
│ │ │ └── keepalived.conf.j2
├── deploy-keepalived.yml
创建目录和文件
1.创建主目录结构
cd /etc/ansible
mkdir -p roles/{keepalived-common,keepalived-master,keepalived-backup}/{tasks,templates}
touch ansible.cfg
touch hosts
touch deploy-keepalived.yml
2.创建 ansible.cfg 文件
cat <<EOF > ansible.cfg
[defaults]
remote_user = root
host_key_checking = False
EOF
3.创建 hosts 文件
cat <<EOF > hosts
[keepalived-master]
Node-1
[keepalived-backup]
Node-2
Node-3
EOF
4.创建 roles/keepalived-common/tasks/main.yml
cat <<EOF > roles/keepalived-common/tasks/main.yml
- name: Install Keepalived
apt:
name: keepalived
state: present
- name: Create /etc/keepalived
file:
path: /etc/keepalived
state: directory
EOF
5.创建 roles/keepalived-master/tasks/main.yml
cat <<EOF > roles/keepalived-master/tasks/main.yml
- name: Configure Keepalived master
template:
src: keepalived.conf.j2
dest: /etc/keepalived/keepalived.conf
owner: root
group: root
mode: '0644'
- name: Enable and start Keepalived service
systemd:
name: keepalived
enabled: yes
state: started
EOF
6.创建 roles/keepalived-master/templates/keepalived.conf.j2
cat <<EOF > roles/keepalived-master/templates/keepalived.conf.j2
vrrp_instance VI_1 {
state MASTER
interface {{ ansible_default_ipv4.interface }}
virtual_router_id 51
priority 101
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.8.100
}
}
EOF
7.创建 roles/keepalived-backup/tasks/main.yml
cat <<EOF > roles/keepalived-backup/tasks/main.yml
- name: Configure Keepalived backup
template:
src: keepalived.conf.j2
dest: /etc/keepalived/keepalived.conf
owner: root
group: root
mode: '0644'
- name: Enable and start Keepalived service
systemd:
name: keepalived
enabled: yes
state: started
EOF
8.创建 roles/keepalived-backup/templates/keepalived.conf.j2
cat <<EOF > roles/keepalived-backup/templates/keepalived.conf.j2
vrrp_instance VI_1 {
state BACKUP
interface {{ ansible_default_ipv4.interface }}
virtual_router_id 51
priority 100
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.8.100
}
}
EOF
9.创建 deploy-keepalived.yml 文件
cat <<EOF > deploy-keepalived.yml
- name: Deploy Keepalived
hosts: all
become: yes
roles:
- keepalived-common
- name: Deploy Keepalived master
hosts: keepalived-master
become: yes
roles:
- keepalived-master
- name: Deploy Keepalived backups
hosts: keepalived-backup
become: yes
roles:
- keepalived-backup
EOF
10.运行deploy-keepalived.yml
ansible-playbook deploy-keepalived.yml