Amazon Linux 2
yum
インスタンスは、複数のタスクを次々に 実行する Ansible Playbook によって操作されます。
yum
プロセスの競合により停止することなく後続のタスクを実行するには、以下の構文にどのような具体的な変更を加える必要がありますか?
現在、以下の 2 番目のタスクは、前のタスクがまだ を解放していないyum
ことを Ansible が認識して処理する方法がわからないため、失敗しています。 yum
yum
lockfile
以下は、2 番目のタスクが呼び出されたときにファイルされる現在のエラー メッセージですyum
。
TASK [remove any previous versions of specific stuff] ************************************************************************************************************************************
fatal: [10.1.0.232]: FAILED! => {"changed": false, "msg": "yum lockfile is held by another process"}
連続する 2 つのyum
タスクは現在次のように記述されています。
- name: Perform yum update of all packages
yum:
name: '*'
state: latest
- name: remove any previous versions of specific stuff
yum:
name: thing1, thing2, thing3, thing4, thing5, thing6
state: absent
解決策としては、最初のタスクのロックが解除されるまで Ansible に待機するように指示する何かを追加するだけだと思いますyum
。しかし、これにはどのような構文を使用すればよいのでしょうか?
答え1
Ansible 2.8 を使用している場合、この問題が発生することはほぼ確実です。YUM パッケージのインストールを実行すると、問題が発生します。この問題の簡単な回避策は、lock_timeout
デフォルトが 0 に設定されているので、変数を 100 以上に設定することです。
- name: Install yum utils
yum:
name:
- yum-utils
- "@Development tools"
lock_timeout: 180
残念ながら、これの問題は、YUM パッケージをインストールする Ansible タスクが多数ある場合、この変数をすべてのタスクに追加する必要があることです。私はこれを何らかの方法でグローバルに設定する方法を探していましたが、うまくいきませんでした。お役に立てば幸いです。