Рубрики
Uncategorized

Дежол, бродяги с неслышным

Управление конфигурацией с блуждающим и несчастным. Теги с DevOps, начинающими, учебниками, производительностью.

Вы хотите автоматизировать настройку ваших серверов производства/тестирования? Так что держите чтение.

Все ресурсы в Github на Alicommit-Malp/Anisible-примеры

использование

Вам нужно установить Vagrant Ver.7.0 в вашу систему от здесь

git clone https://github.com/alicommit-malp/ansible-examples
cd ansible-examples/vm-docker-mariadb
sudo vagrant up --provision

//password is alialp

//test your connection to the mariaDb from localhost
telnet 192.168.3.141 33306

Использовать дело

  • Создание виртуальной машины, любое распространение или версия
    • В нашем случае Centos7
  • Установка Docker Daemon and Docker Client
  • Запуск вашего желания Docker Image как контейнер
    • В нашем случае Mariadb версия 10.2.14

Мы будем использовать Бродяга Чтобы создать нашу виртуальную машину, вы можете установить его из здесь Для получения желаемой операционной системы.

Тогда мы попросим Vagrant сделать VM для нас, используя изображение Centos7 и сопоставить Plockost Port 33306 в порт VM 3306, Futhermore, чтобы назначить 192.168.3.141, как IP-адрес VM

config.vm.box = "generic/centos7"
config.vm.network :private_network, ip: "192.168.3.141"
config.vm.network "forwarded_port", guest: 3306, host: 33306

Vagrant имеет гладкую интеграцию с Неизбежный Поэтому мы можем напрямую использовать доступные для обеспечения свежего созданного CentOS7 VM, поскольку мы требуем, передав имя файла PlayBook к нему.

ansible.playbook = "mariaDb-docker-playbook.yml"

Поэтому мы окажемся с бродяжелом

Vagrant.require_version ">= 1.7.0"

Vagrant.configure(2) do |config|

  config.vm.hostname = "maria_host"
  config.vm.box = "generic/centos7"

  config.vm.network :private_network, ip: "192.168.3.141"
  config.vm.network "forwarded_port", guest: 3306, host: 33306

  config.ssh.insert_key = false

  config.vm.provision "ansible" do |ansible|
    ansible.verbose = "v"
    ansible.raw_arguments  = "--ask-vault-pass"
    ansible.playbook = "mariaDb-docker-playbook.yml"
  end
end

и мы будем работать так

sudo vagrant up --provision

Будьте в курсе того, что параметр «Provision »применит любые изменения в VM, если после того, как однажды запущена упомянутая команда, она создаст виртуальную машину и предоставит его непредумыемым PlayBook, и если вы вносите изменения в файл PlayBook и запустите Та же команда бродяга будет применять изменения.

Ради нашего примера мы используем файл Playbook, как это

--------
- name: provision_mariadb_on_docker_in_vm
  hosts: all
  vars_files:
    - vars.yml
  become: true

  tasks:

    - name: Installing docker related dependencies
      yum:   
        name: "{{ item }}"
        state: latest
      loop:
        - yum-utils
        - device-mapper-persistent-data
        - lvm2
        - python-pip

    - name: Configuring docker-ce repo
      get_url:
        url: https://download.docker.com/linux/centos/docker-ce.repo
        dest: /etc/yum.repos.d/docker-ce.repo
        mode: 0644

    - name: Installing docker
      yum:   
        name: "{{ item }}"
        state: latest
      loop:
        - docker-ce
        - docker-ce-cli 
        - containerd.io

    - name: Starting and Enabling Docker service
      service:
        name: docker
        state: started
        enabled: yes

    - name: Install docker python package 
      pip:
        name: docker 

    - name: Setting up the mariaDB container 
      docker_container:
        image: mariadb:10.2.14
        name: mariadb
        state: started
        restart: yes
        ports:
        - "33306:3306"
        env:
          MYSQL_ROOT_PASSWORD: "{{mariadb_root_password}}"
          MYSQL_PASSWORD: "{{mariadb_password}}"
          MYSQL_USER: "{{mariadb_username}}"

Как это можно увидеть выше, а несейный файл очень проходит, единственная точка, которую мне нужно сделать здесь, — это немного объяснить о файле vars.yml, потому что если вы посмотрите внутрь этого, вы увидите что-то вроде этого

$ANSIBLE_VAULT;1.1;AES256
34383662366637303734663432376630306439343838313564313431343035323862633166363366
3336313535633434326439323966613562313536316138350a316638653233383862383235323965
61666434323332613461656365313331383638666365323731363564646336303464653465636437
3232323365356238640a626464326238643466613366393462346137336365633266343033306139
31373639386636643536646634333939303164313931366365376539643836366631303134303266
64306464616466373863376130646135346332303665653730346231663661363136306134376230
30613166646639303739653838393264656161313235396263613962323535343733356363666165
63666337653161323861356536623461666239336634346338363433646237306535383762346261
39613231646538613666613231333563633638643661643438633234666633326533

Да, вы правильно догадались, он был зашифрован, и это еще одна фантастическая особенность неизбежного, несмотря на то, что я поделился с вами репозитором Но все же вы не можете понять, каково значение mysql_password, например

MYSQL_ROOT_PASSWORD: "{{mariadb_root_password}}"
MYSQL_PASSWORD: "{{mariadb_password}}"
MYSQL_USER: "{{mariadb_username}}"

Но Anbible может понять значения во время выполнения.

Обязательное хранилище

с Обязательное хранилище Вы можете шифровать файлы переменных с паролем так Когда вы предоставляете сервер, вам необходимо предоставить пароль или вы можете использовать файл пароля, если вы хотите автоматизировать эту деталь.

Вы можете проверить соединение с Mariadb, проживающим внутри контейнера, который живет внутри VM, как это

❯ telnet 192.168.3.141 33306
Trying 192.168.3.141...
Connected to 192.168.3.141.
Escape character is '^]'.
n
5.5.5-10.2.14-MariaDB-10.2.14+maria~jessi

Все ресурсы в Github на Alicommit-Malp/Anisible-примеры

Счастливое кодирование:)

Оригинал: «https://dev.to/alialp/devops-vagrant-with-ansible-5bje»