Найти в Дзене
ИТ разнообразно

Автоматизируем развёртывание контейнеров и подов с помощью Podman и Ansible. Часть 1.

Оглавление

Podman и Ansible вместе даже лучше для обеспечения автоматизации и оркестрации жизненных циклов контейнеров и подов

Две самые горячие темы в сообществе Enable Sysadmin — это Podman и Ansible. Это неудивительно, так как оба предлагают привлекательные функции и функциональные возможности для различных потребностей. С Podman у вас есть всё необходимое для управления контейнерами и подами, а Ansible предлагает всё необходимое для автоматизации всего. Итак, каков будет результат суммы преимуществ этих двух инструментов? Конечно же: автоматизированное и организованное управление инфраструктурой контейнеров и подов!

Возьмём, к примеру, мою статью Как создавать мультидоменные веб-приложения с помощью Podman и Nginx. Хотя это относительно простая установка, представьте, что вам нужно воспроизвести её в других средах или масштабировать на большое количество машин. Излишне говорить, что делать всё это вручную совсем непрактично, верно? Вот почему автоматизация отлично подходит для таких вещей, и именно поэтому я покажу, как использовать Ansible для автоматизации Podman для развёртывания контейнеров и модулей, используя в качестве примера среду из моей предыдущей статьи.

Автоматизируем развёртывание необходимых компонентов

Поскольку я решил автоматизировать всё, я автоматизирую создание каталогов и файлов, которые я создал ранее, с помощью этого учебника Ansible (prereq.yaml):

---
- name: "Playbook to create the prerequisites"
hosts: localhost
gather_facts: false
vars:
homedir: /home/localuser
hostip: 192.168.1.30
tasks:
- name: "Create the directories"
ansible.builtin.file:
path: "{{ homedir }}/{{ item }}"
state: directory
loop:
- syscom
- sysorg
- nginx
- name: "Create the httpd syscom file"
ansible.builtin.copy:
dest: "{{ homedir }}/syscom/index.html"
content: |
<html>
<header>
<title>SysAdmin.com</title>
</header>
<body>
<p>This is the SysAdmin website hosted on the .com domain</p>
</body>
</html>
- name: "Create the httpd sysorg file"
ansible.builtin.copy:
dest: "{{ homedir }}/sysorg/index.html"
content: |
<html>
<header>
<title>SysAdmin.org</title>
</header>
<body>
<p>This is the SysAdmin website hosted on the .org domain</p>
</body>
</html>
- name: "Create the Nginx syscom config"
ansible.builtin.copy:
dest: "{{ homedir }}/nginx/syscom.conf"
content: |
server {
listen 80;
server_name sysadmin.com;
location / {
proxy_pass http://{{ hostip }}:8080;
}
}
- name: "Create the Nginx sysorg config"
ansible.builtin.copy:
dest: "{{ homedir }}/nginx/sysorg.conf"
content: |
server {
listen 80;
server_name sysadmin.org;
location / {
proxy_pass http://{{ hostip }}:8081;
}
}
- name: "Create the Nginx default config"
ansible.builtin.copy:
dest: "{{ homedir }}/nginx/default.conf"
content: |
server {
listen 80;
listen [::]:80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

Продолжение следует...

Перевод. Автор оригинала: Alexon Oliveira (Sudoer, Red Hat).