Что эквивалентно r10k в Ansible?
Модули Puppet, такие как модули puppetforge, могут быть развернуты с использованием r10k
Вопрос
Что является эквивалентом этого инструмента в Ansible?
Попытка ответить на вопрос
Это Google Q&A было найдено, что не отвечает на вопрос
2 ответа
Основываясь на обсуждении с @ceejayoz, можно сделать вывод, что эквивалент Ansible R10K от Puppet равен ansible-galaxy install -r requirements.yml
,
R10K
В R10K используется Puppetfile. Puppetfile - это определение модулей (например, из Puppetforge), которые должны быть собраны в определенной среде, например, Puppetfile среды разработки может выглядеть следующим образом:
mod 'garethr/docker', '5.3.0'
mod 'unibet/vagrant', '0.2.1'
mod 'jenkins',
:git => 'https://github.com/jenkinsci/puppet-jenkins',
:ref => 'master'
mod 'jdk_oracle',
:git => 'https://github.com/schrepfler/puppet-jdk_oracle.git',
:ref => 'master'
В то время как Production Puppetfile содержит стабильные версии:
mod 'garethr/docker', '5.2.0'
mod 'unibet/vagrant', '0.2.0'
mod 'schrepfler/puppet-jdk_oracle', '0.2.0'
mod 'rtyler/jenkins', '1.6.1'
Эквивалент r10k в ANSIBLE
Чтобы собрать роли (эквивалент модулей Puppet) из эквивалента Puppetforge Puppet в Ansible - Ansible Galaxy или пользовательских источниках, роли или источники могут быть определены в yml
файлы (на основе ссылки, предоставленной @ceejayoz и этой ссылки). Среда разработки может выглядеть следующим образом:
development.yml
- src: geerlingguy.composer
version: 1.3.0
- src: geerlingguy.java
version: 1.2.1
- src: bennojoy.mysql
- src: https://github.com/ANXS/postgresql.git
version: master
и он может быть запущен путем выдачи sudo ansible-galaxy install -r development.yml
, Пока продукция может выглядеть так:
production.yml
- src: geerlingguy.composer
version: 1.2.0
- src: geerlingguy.java
version: 1.1.1
и быть запущенным выполнением sudo ansible-galaxy install -r production.yml
, Результат может выглядеть следующим образом:
user@host ~ $ sudo ansible-galaxy install -r development.yml
- geerlingguy.composer is already installed, skipping.
- downloading role 'java', owned by geerlingguy
- downloading role from https://github.com/geerlingguy/ansible-role-java/archive/1.2.1.tar.gz
- extracting geerlingguy.java to /etc/ansible/roles/geerlingguy.java
- geerlingguy.java was installed successfully
- bennojoy.mysql is already installed, skipping.
Подумайте, что ansible-galaxy - только половина ответа, потому что она ничего не делает с Ansible playbooks, которые являются синонимами ролевых модулей Puppet. Одним из преимуществ r10k является то, что вы можете управлять всеми аспектами каждой среды в отдельности.
Вы можете рассмотреть отдельные ветви для каждой среды со всеми ролями Ansible, задействованными через ansible-galaxy. Это позволит вам изолировать изменения в книгах, инвентаризации и ролях для каждой среды, не допуская их непреднамеренного включения в производственную среду и не дублируя логику ролей для каждой ветви.