Вы хотите автоматизировать настройку ваших серверов производства/тестирования? Так что держите чтение.
Все ресурсы в 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»