Ansible部署Keepalived


要在三台服务器上使用 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