ppouliot.ansible_bootstrap

Ansibleロール: ansible-bootstrap


Ansibleを効果的に実行するためには、ターゲットマシンにPythonインタープリターが必要です。CoreOSやFlatcar Linuxのマシンは最小限の構成で、Pythonのバージョンが付属していません。さらに、他の人が管理しているジャンプボックスを使用する場合、ソフトウェアのインストールに制限があり、単一のディレクトリ構造にインストールすることしかできない場合があります。

この制限を回避するために、軽量のPythonインタープリターであるportable version of pypyをインストールします。ansible-bootstrapロールは、ユーザーのホームディレクトリにpypy(pipを含む)をインストールし、新しくインストールされたPythonスタックの使用を容易にするためのシンボリックリンクを作成し、パスを調整します。これにより、Ansibleを使ってContainer Linuxノード上のインストールされたPythonインタープリターを利用するために、インベントリファイルを更新できます。

また、Ansibleコントローラー構造をこのモデルでブートストラップするのが非常に便利になります。そのため、Ansibleコントロール用のpypyをブートストラップするための追加機能や、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/roles/commonにAnsible-galaxyを使って一般的なロールのためのフォルダインフラが作成されます。デフォルト値は'False'に設定されています。

enable_ansible_common_role: True

バスティオンの有効化(Ansible SSHプロキシングのため)

この値を設定すると、ansible/ssh.cfgファイルでバスティオンホストを介してSSHプロキシかつAnsibleを使うための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

プロジェクトの構成

通常のロールとは異なり、Container Linuxホスト用に代替のPythonインタープリターを使用するようにAnsibleを構成する必要があります。これは、インベントリファイルに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-bootstrapロールによって作成されるPythonインタープリター/home/core/bin/pythonをAnsibleが使用するように設定されます。

ブートストラッププレイブック


次に、以下の内容をプレイブックファイルに追加し、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 License, Version 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
所有者