[Dockerハンズオン]Ansibleはpythonがないと実行できないのか

[Dockerハンズオン]Ansibleはpythonがないと実行できないのか

Ansibleはエージェントレスで実行できますが、ターゲットノードにはpythonは必要とのことです。

それは本当なのか、ということをDocker上で試してみます。

コードは、Gitにあります。

構成

Ansibleをインストールしたマスターノード(ubuntu)が、CentOSとUbuntuとpythonをアンインストールしたubuntuを動かします。

なお、pythonを持っていないubuntuは実行に失敗します。

ubuntuはパッケージマネージャーにAptを使っており、Aptはpythonに依存していないので、pythonを消すことができます。

実行方法

1. Dockerコンテナの起動

2. Ansibleコンテナに接続

3. targetに対し、sshの接続確認

1. centos, ubuntu への接続

2. ubuntu without python への接続

4. target nodeに対し、ansibleコマンドを実行

 

5. 実行ログの確認(pythonがないUbuntuのみ失敗する)

9行目のログの通り、pythonがないUbuntuは実行に失敗しています。

 

6. target-centos, target-ubuntuに再接続し、targets, centos, ubuntu ファイルが追加されていることを確認

Ansibleの解説

Inventryファイルについて

構成はこのように入れ子構造になっています。

 Playbookについて

先ほど入れ子構造にしたそれぞれに対して(targetsとcentosとubuntu)ファイルを作っています。

なぜpythonがないと失敗するのか

Ansibleがインストールされたマスターノードは、実行時に、実行対象のコントロールノードに対して、pythonの実行ファイルを渡しています。

なのでpythonがないコントロールノードは実行に失敗します。

pythonをインストールできないネットワーク機器などでAnsibleを使う際には注意です。

まとめ

AnsibleをDockerを使って動かし、pythonがないと動かないことを確認しました。

Ansible vaultを使った暗号化についてはこちら。