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のバージョンを搭載していません。この制限を回避するために、軽量なPythonインタープリタであるpypyをインストールできます。coreos-bootstrapロールはpypyをインストールし、インストールしたPythonインタープリタを使用するようにインベントリファイルを更新します。
現在のバージョン:0.6.3
インストール
ansible-galaxy install vmware.coreos-bootstrap
プロジェクトの設定
通常のロールとは異なり、CoreOSホストで代替のPythonインタープリタを使用するようにAnsibleを設定する必要があります。これは、インベントリファイルにcoreos
グループを追加し、そのグループの変数を新しいPythonインタープリタを使用するように設定することで行えます。このようにして、CoreOSホストと非CoreOSホストの管理にansibleを使用できます。CoreOSがインストールされているホストをすべてcoreos
インベントリグループに入れるだけで、自動的に指定したPythonインタープリタが使用されます。
[coreos]
host-01
host-02
[coreos:vars]
ansible_ssh_user=core
ansible_python_interpreter="/home/core/bin/python"
これにより、coreos-bootstrapロールによって作成される/home/core/bin/python
のPythonインタープリタを使用するようにansibleが設定されます。
ブートストラッププレイブック
次に、以下をプレイブックファイルに追加し、site.yml
に含めることで、coreosグループのすべてのホストで実行できます。
- hosts: coreos
gather_facts: False
roles:
- vmware.coreos-bootstrap
gather_facts
がfalseに設定されていることを確認してください。そうしないと、ansibleは最初にPythonを使用してシステム情報を収集しようとしますが、まだインストールされていません!
例プレイブック
ブートストラップ後は、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