Ansible 中 r10k 的对应内容是什么?

Ansible 中 r10k 的对应内容是什么?

Puppet 模块如下来自 puppetforge 的可以使用部署r10k

问题

这个工具在 Ansible 中相当于什么?

尝试回答这个问题

此 Google 问答被发现没有回答问题

答案1

根据与@ceejayoz 的讨论,结论是 Ansible 与 Puppet 的 R10K 相当ansible-galaxy install -r requirements.yml

R10K

R10K使用 Puppetfile。Puppet文件是模块的定义(例如来自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'

虽然生产 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'

相当于 ansible 中的 r10k

为了从 Ansible 中的 Puppetforge 等效项中组装角色(相当于 Puppet 的模块)-Ansible Galaxy或自定义来源,角色或来源可以在yml文件中定义(基于@ceejayoz 提供的链接此链接)开发环境可能如下所示:

开发.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。虽然生成可能看起来像:

生产.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.

答案2

认为 ansible-galaxy 只是答案的一半,因为它对 Ansible playbook 没有任何作用,而 Ansible playbook 是 Puppet 角色模块的同义词。r10k 的好处之一是您可以单独管理每个环境的所有方面。

您可能会考虑为每个环境创建单独的分支,并通过 ansible-galaxy 引入所有 Ansible 角色。这样您就可以根据环境隔离剧本、库存和角色更改,而不会无意中让它们进入生产环境,也不会在每个分支上重复角色逻辑。

相关内容