vmware.coreos-bootstrap
重要提示:在 ansible 2.1 之后,以下方法不再有效:
ansible_python_interpreter="PATH=/home/core/bin:$PATH python"
好消息是,这已不再需要。现在可以使用以下配置,它适用于新旧版本的 ansible,并且更简单:
ansible_python_interpreter="/home/core/bin/python"
coreos-bootstrap
为了有效运行 ansible,目标机器需要有一个 Python 解释器。CoreOS 机器是极简的,不自带任何 Python 版本。为了解决这个问题,我们可以安装 pypy,这是一种轻量级的 Python 解释器。coreos-bootstrap 角色将为我们安装 pypy,我们将更新库存文件以使用安装的 Python 解释器。
当前版本:0.6.3
安装
ansible-galaxy install vmware.coreos-bootstrap
配置你的项目
与典型角色不同,你需要配置 Ansible 来使用 CoreOS 主机的替代 Python 解释器。这可以通过在库存文件中添加一个 coreos
组,并设置该组的变量来使用新的 Python 解释器来完成。这样,你可以使用 ansible 来管理 CoreOS 和非 CoreOS 主机。只需将所有带有 CoreOS 的主机放入 coreos
库存组中,它将自动使用指定的 Python 解释器。
[coreos]
host-01
host-02
[coreos:vars]
ansible_ssh_user=core
ansible_python_interpreter="/home/core/bin/python"
这将配置 ansible 使用 /home/core/bin/python
中的 Python 解释器,该解释器将由 coreos-bootstrap 角色创建。
引导 Playbook
现在你可以简单地将以下内容添加到你的 playbook 文件中,并在 site.yml
中包含它,以便它在 coreos 组的所有主机上运行。
- hosts: coreos
gather_facts: False
roles:
- vmware.coreos-bootstrap
确保将 gather_facts
设置为 false, 否则 ansible 会尝试先使用尚未安装的 Python 收集系统信息!
示例 Playbook
引导后,你可以像往常一样使用 ansible 来管理系统服务,安装 Python 模块(通过 pip),并运行容器。以下是一个基本示例,它启动 etcd
服务,安装 docker-py
模块,然后使用 ansible 的 docker
模块拉取并启动一个基本的 nginx 容器。
- name: Nginx 示例
hosts: web
tasks:
- name: 启动 etcd
service: name=etcd.service state=started
sudo: yes
sudo_user: root
- name: 安装 docker-py
pip: name=docker-py
- name: 拉取容器
raw: docker pull nginx:1.7.1
- name: 启动 nginx 容器
docker:
image="nginx:1.7.1"
name="example-nginx"
ports="8080:80"
state=running
许可证
MIT