Ansible与ploy集成的插件。
项目描述
概述
ploy_ansible插件提供Ansible与ploy的集成。它自动构建一个清单并提供了自定义连接插件。
安装
ploy_ansible最好使用easy_install、pip或在buildout中使用zc.recipe.egg进行安装。
命令
插件为ploy添加以下命令。
- configure
配置实例。有三种方法指定如何配置实例。通过实例的roles选项应用给定的角色、通过playbook选项设置的playbook或通过在playbooks-directory中找到的实例的唯一名称的playbook。使用roles或playbook是互斥的。如果您指定了一个playbook,并且默认位置也存在一个playbook,您将收到一个警告。
- inventory
列出所有已知的组和它们关联的主机,包括常规默认组,如all,以及隐式组,如特定master(即所有ez-instances)的实例。
- ansible
运行Ansible命令。这基本上反映了Ansible的ansible脚本。
- playbook
应用playbook。这基本上反映了Ansible的ansible-playbook脚本。
- vault
管理文件加密。这基本上反映了Ansible的ansible-vault脚本,但通过ploy.conf处理加密密钥源。
- vault-key
管理vault密钥。
选项
全局
playbooks-directory
Ansible部分的playbooks-directory选项允许您指定查找playbook、roles、host_vars等的目录。如果您指定了一个相对路径,则它始终相对于ploy.conf目录。如果您有如下结构
project |-- deployment | |-- roles | |-- host_vars | |-- etc |-- ploy.conf
那么您应该在您的ploy.conf中放入以下内容
[ansible] playbooks-directory = ../deployment
默认情况下,它设置为ploy.conf所在的目录的父目录,如下所示
project |-- roles |-- host_vars |-- etc |-- ploy.conf
vault-password-source
使用keyring库,您可以将Ansible vault的加密密钥存储在您的密钥链中。
vault-password-source选项是您密钥链中使用的id。该id必须在所有必须使用该功能的人中是唯一的,因为它用作密钥链中的标识符。如果有疑问,请使用一个有意义的名称作为前缀,并通过运行python -c "import uuid; print(uuid.uuid4().hex)"来添加一个guid。
如果您想重新加密您的文件,您必须将旧id放入vault-password-old-source选项,并在vault-password-source中设置一个新的id。仅递增数字或附加一个新的guid是最好的。
示例
[ansible]
vault-password-old-source = my-domain-deployment-0da2c8296f744c90a236721486dbd258
vault-password-source = my-domain-deployment-042a98b666ec4e4e8e06de7d42688f3b
您可以使用vault-key命令管理您的密钥。为了与其他开发者轻松交换,您还可以通过使用vault-key export和vault-key import命令来导出和导入密钥。
每个实例
- groups
空格分隔的Ansible组名列表,此实例应添加到默认组之外。
- roles
由configure命令使用。这允许您通过应用空格分隔的角色来配置实例。这就像创建一个仅指定主机和角色名称列表的playbook。如果设置了sudo选项,它也会设置生成的playbook中的sudo。
- playbook
允许您显式指定用于此实例的playbook。如果您需要sudo,那么您必须在那个playbook中自己添加它。
任何以ansible_开头的选项都将原样传递给Ansible。这可以用于设置如ansible_python_interpreter之类的设置。
任何以ansible-开头的选项将去掉ansible-前缀,然后传递给Ansible。这是设置Ansible变量以在playbook和roles中使用的主要方式。
所有其他选项都以前缀ploy_开头,并可供Ansible使用。
Ansible清单
所有在 ploy.conf 中的实例都可以通过它们的 唯一ID 被Ansible访问。
每个实例的变量从 group_vars、host_vars 和 ploy.conf 中收集。
Ansible查找插件
ploy_crypted 查找插件可以在playbooks中使用,用于读取加密文件的内容。这是访问加密数据的一种方法,您不需要将数据移动到yml文件中。一个额外的优点是,文件只有在实际访问时才会被解密。如果您运行通过标签筛选的任务,而这些任务不访问加密数据,则根本不会解密。
API使用
在Python方面,每个ploy实例都获得了以下方法
- apply_playbook(self, playbook, *args, **kwargs)
将 playbook 应用到实例。
- has_playbook
如果实例具有以下任一 roles 或 playbook选项,则返回 True。
- get_playbook(*args, **kwargs)
返回Ansible内部 PlayBook 类的实例。这可以是来自文件(从 playbook 选项或playbook kwarg),或从 roles 选项动态生成。
- configure(*args, **kwargs)
使用与 configure 命令相同的语义配置实例。
- get_ansible_variables
返回从清单中获取的Ansible变量。它不包括 fact,因为它没有连接到实例。这在Fabric脚本中特别有用。
- get_vault_lib
返回一个可用的Ansible VaultLib类。使用 encrypt 和 decrypt 方法对字符串进行加密/解密。
已知问题
在macOS上使用存储在keyring中的密钥时,Ansible可能会挂起,显示类似于以下的消息:` objc[81450]: +[__NSCFBoolean initialize] may have been in progress in another thread when fork() was called. objc[81450]: +[__NSCFBoolean initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug. ` 这是由尝试在fork进程中访问keyring中的秘密引起的。
为了解决这个问题,您可能需要为受影响的宿主(或仅为“all”group_vars)添加一个加密的host_vars yml,以便在Ansible中早期触发密钥加载。
变更日志
2.0.0 - 2022-08-17
已移除对Python 3.6的支持。[fschulze]
添加了对Python 3.10的支持,使用ansible-core。[fschulze]
恢复ploy_crypted对旧版Ansible版本的支持。[fschulze]
2.0.0b8 - 2021-09-08
永远不要在清单数据中存储Python对象,以修复ansible >= 2.8.x的问题。[fschulze]
2.0.0b7 - 2021-07-16
修复Python 3.x上execnet连接的编码问题。[fschulze]
修复使用keyring在较新macOS上与ansible 2.x一起使用时的挂起问题。[fschulze]
2.0.0b6 - 2020-05-13
支持从Ansible 2.x的vault cat命令切换到 view 命令。[fschulze]
2.0.0b5 - 2019-06-09
此版本支持到Ansible 2.7.x及以下。[fschulze]
恢复对ansible 1.9.x的支持。[fschulze]
支持Python >= 3.5与ansible >= 2.4.x。[fschulze]
将 InventoryManager 中的主机查找改为懒加载,以防止在不相关的主机不可访问时出现错误。[fschulze]
2.0.0b4 - 2018-02-11
修复了对 execnet_connection 的 become/sudo 支持。[fschulze]
修复了剧本发现问题。[fschulze]
2.0.0b3 - 2018-02-10
修复了 ploy_crypted 查找插件。[fschulze]
2.0.0b2 - 2018-02-07
重新添加了 execnet_connection 作为插件。[fschulze]
2.0.0b1 - 2018-02-07
支持 ansible >= 2.4.0 并放弃对旧版本的支持。[fschulze]
支持 ploy 2.0.0。[fschulze]
1.4.1 - 2018-02-11
在 configure 命令失败时返回正确的退出码。[fschulze]
修复了剧本发现问题。[fschulze]
1.4.0 - 2017-12-17
除了 [master-name]-[instance-name].yml,还查找 [instance-name].yml。这允许在多个主服务器上使用相同的剧本。[fschulze]
1.3.2 - 2016-06-02
如果没有定义额外的角色或库路径,则不添加空搜索路径。这可以防止搜索当前工作目录。[fschulze]
1.3.1 - 2015-09-03
将 Ansible 的要求更新到 < 2.dev0。即将推出的 2.0.0 有太多内部更改,无法支持。[fschulze]
在 Inventory 中只添加一次主机。[fschulze]
1.3.0 - 2015-04-10
添加了对实例的 groups 选项的处理,以允许定义额外的 Ansible 组。[fschulze]
按需获取主机变量,而不是在启动时获取。如果您有多个加密的 yml 文件的主机,这将大大加快大多数情况下的速度。[fschulze]
针对 ansible 1.9 的更改的修复。[fschulze]
添加 inventory 命令以列出所有已知组和它们关联的主机。[fschulze]
1.2.4 - 2015-02-28
如果使用 roles 选项,则传递 sudo 设置。[fschulze]
1.2.3 - 2015-02-28
修复了 ansible > 1.6 的 sudo 支持。[fschulze]
在使用未经验证的 ansible 版本时打印警告。[fschulze]
如果未安装 ansible,则要求 >= 1.8,因为这不再违反 buildout 的沙盒。[fschulze]
1.2.2 - 2015-02-18
针对 ansible 1.8 的更改的测试和修复。[fschulze]
1.2.1 - 2015-01-06
将 Ansible 限制在 1.8 之前,因为 > 1.8 会破坏某些功能。[fschulze]
1.2.0 - 2014-10-27
在 inventory 中始终设置 ansible_ssh_user。[fschulze]
在调用原始 Inventory.__init__ 方法后清除主机和模式缓存。[fschulze]
将 --extra-vars 选项添加到 configure 命令中。[witsch (Andreas Zeidler)]
提供 ploy_crypted 查找插件以将加密文件加载到 Ansible 变量中。只有 ascii 和 utf8 编码的文件才能工作。[fschulze]
在 get_ansible_variables 方法中展开 Ansible 变量。[fschulze]
通过 keyring 库支持 Ansible 保险库,以安全地存储密钥,这样您就不必输入它或将其保存在不受保护的文件中。[fschulze]
1.1.0 - 2014-08-13
针对 ansible 1.7 的更改的测试和修复。[fschulze]
将可打印性参数添加到 configure 命令中。[fschulze]
1.0.0 - 2014-07-19
添加了文档。[fschulze]
1.0b8 - 2014-07-15
如果尚未导入,则将 ansible 添加为依赖项。[fschulze]
1.0b7 - 2014-07-08
包装和测试修复。[fschulze]
1.0b6 - 2014-07-04
使用唯一的实例 ID 来避免问题。[fschulze]
将 mr.awsome 重命名为 ploy,将 mr.awsome.ansible 重命名为 ploy_ansible。[fschulze]
1.0b5 - 2014-06-16
如果尚未设置,则将剧本中的用户设置为配置中的用户。[fschulze]
将默认剧本目录从 aws.conf 目录更改为其父目录。[fschulze]
1.0b4 - 2014-06-11
为实例添加了 playbook 和 roles 配置选项。[fschulze]
向实例添加了 has_playbook 和 configure 方法。[fschulze]
添加了 before/after_ansible_configure 钩子。[fschulze]
1.0b3 - 2014-06-09
使用 execnet 进行连接。每个主机只有一个 ssh 连接,并且该连接被用于所有命令。[fschulze]
确保 playbook 目录始终是绝对路径。[fschulze]
防止使用持久的 ssh 连接,因为这很容易因为代理而连接到错误的 jail,这使 ansible 目前运行速度变慢。[fschulze]
添加了对 su 和 vault (ansible 1.5) 以及 --force-handlers (ansible 1.6) 的支持。[fschulze]
从安装要求中删除了 ansible。它不会在 buildout 中安装,因此需要在虚拟环境中或通过系统包安装。[fschulze]
1.0b2 - 2014-05-15
添加了 configure 命令,它是 playbook 命令的简化版本,它对 yml 文件的路径位置有假设。[fschulze]
如果请求了不在 playbook 主机列表中配置的主机的 playbook,则发出警告。[fschulze]
允许 mr.awsome 插件添加 ansible 变量。[fschulze]
尽早注入 ansible 路径,因为它们在其他情况下可能不适用。[fschulze]
将 setuptools-git 从 setup.py 移动到 .travis.yml,它只用于发布和测试。[fschulze]
1.0b1 - 2014-03-24
初始发布 [fschulze]
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分布
构建分布
ploy_ansible-2.0.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9cb9db34b49a4855338ed277b9ba05c0d50137b0c357eabdcdc797f79e427cb1 |
|
MD5 | b72e459db0b72fdbba4fa8561fed6869 |
|
BLAKE2b-256 | b7987ec70221f58b3a8652f1dc303ae61a8a2ff377e8a67ef4dcf4128b703ab6 |
ploy_ansible-2.0.0-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d324092248a350cb8e3be93f2a616d9de86cef7d0dd764d0103853dccc8a0021 |
|
MD5 | 607afaa6882627f29f7b0b0878e9285c |
|
BLAKE2b-256 | 8d96f81d0474837ec551067b6e4e3861f77fbaad173a02b5677d8ab9824bf2d6 |