ppouliot.ansible_bootstrap
Ansible 角色:ansible-bootstrap
为了有效运行 Ansible,目标机器需要有一个 Python 解释器。CoreOS 和 Flatcar Linux 机器是最小化的,不附带任何版本的 Python。此外,当使用由其他人管理的跳板机时,您对软件安装的访问有限,可能只能安装到单个目录结构中。
为了解决这个限制,安装了 pypy 的便携版,这是一款轻量级的 Python 解释器。ansible-bootstrap 角色将 pypy 及其 pip 安装到用户的主目录中,创建简单使用新安装的 Python 堆栈的符号链接,并调整路径。然后,您可以更新我们的库存文件,以在容器 Linux 节点上使用安装的 Python 解释器。
此外,将包含的 Ansible 控制器结构引导至此模型非常有用。因此,增加了额外的功能,用于引导 pypy 以控制 Ansible,以及启用 SSH 跳板主机代理的 Ansible 控制器。
角色变量:
启用 PIP
设置此值可控制 PIP 和所需工具的安装到用户的主目录。默认值为 'True'
enable_pip: True
启用 Ansible
设置此值可控制在新部署的 pypy 环境中安装 Ansible。此外,在 ~/bin 中创建符号链接用于应用,并将其添加到用户的 .bashrc 路径中。默认值为 'False'
enable_ansible: True
启用 Ansible 文件夹
设置此值可创建 Ansible 控制器的文件夹结构和配置文件,部署到主目录中作为其他工具的组成部分。默认值为 'False'
enable_ansible_folders: True
启用 Ansible 通用角色文件夹
设置此值使用 ansible-galaxy 创建 ~/ansible/roles/common 中的通用角色的文件夹结构。默认值为 'False'
enable_ansible_common_role: True
启用 Bastion(用于 Ansible SSH 代理)
设置此值在 ansible/ssh.cfg 文件中为使用 SSH 通过跳板主机的 Ansible 配置创建一个。默认值为 'False'
enable_bastion: True
bastion_hostname: bastion.contoso.ltd # 跳板主机 FQDN
bastion_user: bwayne # 跳板主机用户
bastion_ip: 172.168.1.10 # 跳板主机 IP 地址
bastion_ansible_host: 192.168.1.* # 跳板另一侧的主机
安装
使用 ansible-galaxy 安装最新模块。
ansible-galaxy install ppouliot.ansible-bootstrap
配置您的项目
与典型角色不同,您需要配置 Ansible 使用替代的 Python 解释器来针对容器 Linux 主机。这可以通过在库存文件中添加一个 container-linux 组并将该组的变量设置为使用新的 Python 解释器来完成。这样,您就可以使用 Ansible 管理 CoreOS 和非 CoreOS 主机。只需将每个具有 CoreOS 的主机放入 container-linux 库存组,它将自动使用指定的 Python 解释器。
[container-linux]
host-01
host-02
[container-linux:vars]
enable_pip=True
ansible_ssh_user=core
ansible_python_interpreter=/home/core/bin/python
ansible_connection=ssh
ansible_ssh_private_key_file=/etc/ansible/keys/id_rsa
enable_ansible=True
enable_ansible_folders=True
enable_bastion=True
bastion_hostname=bastion.contoso.ltd
bastion_user=bwayne
bastion_ip=172.168.1.10
bastion_ansible_host=192.168.1.*
这将配置 Ansible 使用位于 /home/core/bin/python 的 Python 解释器,该解释器将由 ansible-bootstrap 角色创建。
引导 Playbook
现在,您可以简单地将以下内容添加到您的 playbook 文件中,并将其包含在您的 site.yml 中,使其在 container-linux 组中的所有主机上运行。
- hosts: container-linux
gather_facts: False
remote_user: core
roles:
- ppouliot.ansible-bootstrap
确保 gather_facts 设置为 false,否则 Ansible 将尝试首先使用尚未安装的 Python 来收集系统信息!
贡献者
- Peter Pouliot peter@pouliot.net
版权和许可证
版权 (C) 2018 Peter J. Pouliot
可以通过以下方式联系 Peter Pouliot: peter@pouliot.net
根据 Apache 许可证第 2.0 版(“许可证”)进行许可证授权;您不得以除符合许可证外的方式使用此文件。您可以在以下位置获取许可证副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,按“现状”分发的许可证不附带任何明示或暗示的担保或条件。请参阅许可证以了解管理权限和限制的具体内容。