7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-12-19

この記事は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"

参考文献

7
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?