Ansibleは初めてです。私は、Ansibleのロールの概念に関するチュートリアルを実行しようとしています。次のマスターハンドブックがあります。
--- # Master Playbook for Webservers
- hosts: apacheweb
user: test
Sudo: yes
connection: ssh
roles:
- webservers
これは、次のtask/main.ymlを持つwebserversロールを参照します。
- name: Install Apache Web Server
yum: pkg=httpd state=latest
notify: Restart HTTPD
そしてhandler/main.yml:
- name: Restart HTTPD
service: name=httpd state=started
上記のマスタープレイブックを実行すると、次のエラーが発生します。
TASK [webservers : Install Apache Web Server] **********************************
fatal: [test.server.com]: FAILED! => {"changed": false, "failed": true, "msg": "The following packages have pending transactions: httpd-x86_64", "rc": 128, "results": ["The following packages have pending transactions: httpd-x86_64"]}
このエラーが何に対応するのか理解できません。私の調査に基づいて、Yumモジュールを使用している方法に問題があることを示唆している可能性があります。
注:Ansibleバージョン:
ansible 2.2.1.0
config file = /etc/ansible/ansible.cfg
ターゲットホストに未完了/保留中のトランザクションがあるようです。インストールしてみてくださいyum-utils
実行するパッケージyum-complete-transaction
エラーを出しているターゲットホストに。
# yum-complete-transaction --cleanup-only
詳しくは Fixing There unfinished transaction を見てください。
yum-complete-transactionは、システム上で不完全または中止されたyumトランザクションを見つけて、それらの完了を試みるプログラムです。 yumトランザクションが実行の途中で中止された場合、通常/ var/lib/yumにあるtransaction-all *ファイルとtransaction-done *ファイルを調べます。
未完了のトランザクションが複数見つかった場合は、最新のトランザクションを最初に完了しようとします。これを複数回実行して、すべての未完了のトランザクションをクリーンアップできます。
未完了のトランザクションが残っています
Sudo yumインストールyum-utils
yum-complete-transaction --cleanup-only
私はプレイブックにこのタイプの設定をansibleに使用しています:
- name: Install Apache Web Server
yum: name=httpd state=latest
notify: Restart HTTPD
私が知る限り、yumモジュールのansbileにはyum: pkg=httpd
などのオプションはありません(私が間違っていなければ、それはpkg = httpdはdebianベースのディストリビューションでのapt-get用です)
複数のパッケージをインストールする必要がある場合は、次のようなものを使用できます。
- name: "Install httpd packages"
yum: name={{ item }} state=present
with_items:
- httpd
- httpd-devel
- httpd-tools
もちろん、state = presentをstate = latestまたはあなたに最も合うかもしれないどんなオプションでも
http://docs.ansible.com/ansible/yum_module.html -yumモジュールのansibleドキュメント