ドッカーのインスタンスで、実行中のinitシステムに依存する "サービスが有効"なテストを組み込んだ場合、playbookテストを実行することは、 centos 7の場合、これはシステム化されるでしょう。dockerでsystemdサービスを使って可能なプレイブッブをテストする
明確にする:このテストでは、特定のOSインスタンスに対して不可能なプレイプレーンが正しく動作し、サポートする必要があり、ベアメタル/仮想マシンに展開できることを示します。
たとえば、この単純なnginx yamlスニペットをテストすると、service: state: started
宣言が組み込まれています。
# ./ansible-nginx/tasks/install_nginx.yml
- name: NGINX | Installing NGINX repo rpm
yum:
name: http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
- name: NGINX | Installing NGINX
yum:
name: nginx
state: latest
- name: NGINX | Starting NGINX
service:
name: nginx
state: started
:
$ cat Dockerfile
FROM ansible/centos7-ansible:stable
WORKDIR /provision
COPY hosts /etc/ansible/
COPY ansible-nginx /provision
CMD ["ansible-playbook", "deploy.yml"]
は、ここでのエラーで失敗します。
$ docker run -it foo
PLAY [localhost] ***************************************************************
TASK [setup] *******************************************************************
ok: [localhost]
TASK [NGINX | Installing NGINX repo rpm] ***************************************
changed: [localhost]
TASK [NGINX | Installing NGINX] ************************************************
changed: [localhost]
TASK [NGINX | Starting NGINX] **************************************************
fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": "no service or tool found for: nginx"}
NO MORE HOSTS LEFT *************************************************************
[WARNING]: Could not create retry file 'deploy.retry'. [Errno 2] No such file or directory: ''
PLAY RECAP *********************************************************************
localhost : ok=3 changed=2 unreachable=0 failed=1
、彼らが実行されるためにsystemdを(使用ansibleスクリプトをテストするための方法だろう何baremetal/vm)で異なるOSバージョンのドッカーを使用していますか?
間違いなく 'CMD'指示文が1つだけで、' CMD ["/ usr/sbin/init"] 'でなければなりません。そして、このドッカー画像を使って、あなたは「docker run -d --name foo foo && sleep 10 && docker exec -ti foo ansible-playbook/provision/deploy.yml'を試して、プレイブックを開始することができます。 –
ありがとうございます。私は私の答えを編集しました。 –