LoginSignup
0
0

More than 3 years have passed since last update.

amazonlinux2のコンテナでAnsibleのsystemdモジュールがエラーになるのでserviceで回避する手順

Posted at

注意事項:これはワークアラウンドな手順です。systemctlを使っていく方が正しい道だと思います。

amazonlinux:2 のコンテナでAnsibleのsystemdモジュールがエラーになるのでserviceで回避する手順です。
具体的には以下のようなタスクを実行したところ、

- name: start jenkins
  systemd:
    name: jenkins
    state: started

以下のようなエラーが出ました。

TASK [start jenkins] ***********************************************************************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "cmd": "/usr/bin/systemctl", "msg": "Failed to get D-Bus connection: Operation not permitted", "rc": 1, "stderr": "Failed to get D-Bus connection: Operation not permitted\n", "stderr_lines": ["Failed to get D-Bus connection: Operation not permitted"], "stdout": "", "stdout_lines": []}

対策

systemdではなくて、serviceを使用します。
serviceを使用するために、initscripts をインストールします。

- name: Install yum packages
  yum:
    name:
      - initscripts

- name: start jenkins
  service:
    name: jenkins
    state: started

おまけ: VSCでamazonlinux2のイメージでAnsibleをテストできるようにするまでの手順

なぜこんなことをやったのかと言うと、VSC(Visual Studio Code)のAnsible Extentionを使うと、
手元でDockerを利用しながらサクサクとAnsibleを動かしながら書けるためです。

具体的には以下の様なdockerfileを書きます。(デプロイとかしないので小さくする努力を放棄してます)

FROM amazonlinux:2
RUN  yum -y install python-pip && pip install ansible

ローカル用にbuildします。タグ名は任意です。
bash
docker build -t localhost/amazonlinux2-ansible .

VSCを立ち上げて、AnsibleのExtentionを入れます。
image.png

Extentionの右下の歯車(Setting)をクリックしてExtentionの設定メニューを出します。

検索画面に docker と入れると、 Custom docker image when running playbook in Docker. の項目が出るので、自分が作成したコンテナイメージのタグ名を設定します。特に保存するボタンなどはなくて、即反映でした。

image.png

この後は、playbookをダブルタップ(右クリック)して Run Ansible Playbook in Docker を実行すると、上述したコンテナイメージを利用してPlaybookの実行が始まります。
image.png

0
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
0
0