Help us understand the problem. What is going on with this article?

[Ansible] CoreOSに対してplaybookを実行する前に必要なこと

この記事はFringe81アドベントカレンダー2019の19日目の投稿です!
最近Ansibleを触る機会をいただいたのでその時に調べたことを書きます!

Ansibleとは?

レッドハットが開発するオープンソースの構成管理ツール。
特徴を簡単にまとめると以下の3つです。

  • Simple: ymlファイルで設定が読みやすい。
  • Agentless: サーバー追加ごとにエージェントを追加する必要がない。
  • Powerful: モジュール群が豊富。

コントロールノードにAnsibleをインストールしファイルを用意するだけでコントロールノードからターゲットノードに対してSSH経由でタスクを送信することができます。(プッシュ型)

CoreOSにplaybookを実行するときの注意点

CoreOSに対してplaybookを実行させたときにうまく動作しなかったので、いろいろ調べていたら、以下の一文を発見しました。
http://coreos.com/blog/managing-coreos-with-ansible.html

 The target machine must have a Python interpreter for Ansible to be able to execute these modules and thus configure your machine.

CoreOS is designed for running containers and does not ship with a Python interpreter. Additionally, it has no package manager to install Python. This presents a small chicken-and-egg problem.

Luckily Ansible has a raw execution mode which bypasses Python modules and runs shell commands directly on a remote system. We will leverage this feature to bootstrap a lightweight Python interpreter onto our CoreOS hosts.

訳してみる

「ansibleではmoduleを実行するためにターゲットノードにpythonがインストールされている必要があるが、CoreOSはPythonが入っていないしPythonをインストールするためのパッケージマネージャーが存在しない。ただ、AnsibleにはPythonモジュールをバイパスし、リモートシステムでシェルコマンドを直接実行するraw実行モードがある。この機能を利用して、軽量のPythonインタープリターをCoreOSホストにブートストラップすることでmoduleを実行することが可能となる。」

途中ちょっとよくわからんとこあったけど PythonインタープリターをCoreOSホストにブートストラップする 必要があることはわかりました。笑
Blogにしたがって次の3つの手順でやることでCoreOSに対してplaybookを実行することができました!

1. inventoryファイルの vars に以下の項目を追加

[hoge]
core-01

[hoge:vars]
ansible_ssh_user=core
ansible_python_interpreter="PATH=/home/core/bin:$PATH python"

2. role: coreos-bootstrapをコントロールノードにinstall

$ ansible-galaxy install defunctzombie.coreos-bootstrap -p ./roles

3. playbookにroleを追加

---
- hosts: hoge
  gather_facts: False
  roles:
    - defunctzombie.coreos-bootstrap

[おまけ] CoreOSのhostにdockerコマンドを実行したい時

ターゲットノードに対してdockerコマンドを実行したい場合はdocker-pyを対象のCoreOSにインストールするtaskを追加する必要があります。

- hosts: hoge
  gather_facts: False
  tasks:
    - name: docker-pyのインストール
      pip:
        name: docker-py
        executable: "/home/core/pypy/bin/pip"

参考文献

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした