Déploiement avec Ansible et AWS S3
Ansible est un excellent outil permettant d’automatiser la gestion et le déploiement de l’orchestrateur Maverics. Utilisez ce guide en tant que base pour votre propre code Ansible ou en tant que ligne directrice pour un modèle de déploiement simple avec d’autres logiciels d’automatisation DevOps.
Nous utiliserons ici Ansible et un compartiment AWS S3 en tant que dépôt d’artefacts. Cette approche peut être utilisée pour les déploiements initiés par un administrateur ou configurés pour s’exécuter automatiquement dans le cadre d’un pipeline CI/CD.
Hypothèses et prérequis
- Ansible est installé sur une machine de commande (par exemple un ordinateur portable local ou un serveur dédié dans un centre de données).
- Un compartiment Amazon S3 est mis à la disposition du contrôleur et des hôtes cibles dans lesquels se trouvent des versions de l’orchestrateur.
- La communication entre l’hôte cible et le contrôleur a déjà été établie.
- L’hôte cible fonctionne sous un système d’exploitation Linux - RHEL/CentOS 7 ou supérieur.
- Pour les besoins de ce guide, nous utilisons un client configurable appelé « ExampleCo ».
Structure des répertoires Ansible
Utilisez la structure d’annuaire recommandée dans la documentation Ansible.
Déploiement de Maverics
Initiez le déploiement à l’aide d’un playbook pointant vers un rôle unique (par exemple, example-cd
) :
---
- name: ExampleCo Installation
hosts: tag_Role_ExampleCo
roles:
- example-cd
Le rôle example-cd
contient deux sous-répertoires
user1@controller-dev ~/code/ansible/roles/example-cd
> $ ls -l
drwxr-xr-x 5 user1 staff 160 Aug 30 13:55 tasks
drwxr-xr-x 3 user1 staff 96 Aug 30 14:13 vars
main.yaml
Nous utilisons trois fichiers de tâches
différents dans le répertoire des tâches qui sont pilotés à partir de main.yaml
:
- name: Include a play after another play
include: rpm-deploy.yml
- name: Include the configuration
include: config.yml
when: deploy_config == 'True'
rpm-deploy.yml
Cette tâche Ansible extrait l’artefact de déploiement depuis S3. Nous utilisons S3 en raison de son système de gestion des versions permettant de stocker nos artefacts de déploiement. Indiquez la version que vous souhaitez déployer en utilisant le fichier vars/main.yml
. Le fichier rpm-deploy.yml
ressemble à ce qui suit :
- name: Simple GET operation
amazon.aws.aws_s3:
bucket: strata-demo-distribution
object: /maverics/releases/{{ item }}/maverics.{{ item }}.x86_64.rpm
dest: /tmp/maverics.{{ item }}.x86_64.rpm
mode: get
loop:
- "{{ install_maverics }}"
- name: Make the maverics RPM executable
become: yes
file:
path: /tmp/maverics.{{ item }}.x86_64.rpm
owner: centos
group: centos
mode: 0744
loop:
- "{{ install_maverics }}"
- name: Installing the maverics RPM
become: yes
dnf:
name: /tmp/maverics.{{ item }}.x86_64.rpm
state: present
disable_gpg_check: yes
register: yum_output
loop:
- "{{ install_maverics }}"
config.yml
Utilisez un fichier config.yml
distinct car il n’est pas nécessaire de le déployer après chaque instance de l’orchestrateur Maverics. L’indicateur deploy_config
dans vars(main.yml)
déterminera si le fichier est déployé.
Étant donné que S3 est utilisé pour stocker le fichier de configuration, vous pouvez utiliser le système de gestion des versions S3 pour revenir à une version antérieure du fichier.
- name: GET an object but don't download if the file checksums match.
amazon.aws.aws_s3:
bucket: maverics-config
object: /configs/maverics.yaml
dest: /tmp/maverics.yaml
# version: Q.rNd9.E8VDujhfOcFsKjfLOqHLPwgL5
mode: get
overwrite: different
- name: Copy a new file into place, backing up the original if it differs from the copied version
become: yes
ansible.builtin.copy:
src: /tmp/maverics.yaml
dest: /etc/maverics/maverics.yaml
remote_src: yes
owner: maverics
group: maverics
mode: '0777'
backup: yes
- name: Remove file (delete file)
ansible.builtin.file:
path: /tmp/maverics.yaml
state: absent
Exécution du playbook
Définissez la version de l’orchestrateur Maverics souhaitée dans vars/main.yaml
et déterminez si une nouvelle configuration est déployée avec une nouvelle version de l’orchestrateur ou non.
install_maverics: v0.6.6
deploy_config: 'True'
Annulation du déploiement
Pour annuler un déploiement, il suffit de remplacer la version de maverics par la version souhaitée et de réexécuter le playbook. Notez que la version doit être présente en tant qu’objet dans le compartiment S3.