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 来收集系统信息!

贡献者


版权和许可证


版权 (C) 2018 Peter J. Pouliot

可以通过以下方式联系 Peter Pouliot: peter@pouliot.net

根据 Apache 许可证第 2.0 版(“许可证”)进行许可证授权;您不得以除符合许可证外的方式使用此文件。您可以在以下位置获取许可证副本:

http://www.apache.org/licenses/LICENSE-2.0

除非适用法律要求或书面同意,按“现状”分发的许可证不附带任何明示或暗示的担保或条件。请参阅许可证以了解管理权限和限制的具体内容。

关于项目

A PYPY (and pip) deployment for bootstrapping Ansible resources.

安装
ansible-galaxy install ppouliot.ansible_bootstrap
许可证
apache-2.0
下载
239
拥有者