私のサーバーにはデフォルトでpython2がインストールされていません(ターゲットサーバーは主にAlpine Linuxにあります)。この問題を解決するには、次のスクリプトを使用します。
- hosts: all
become: yes
remote_user: root
gather_facts: no
pre_tasks:
# Python is not installed by default
- name: 'Install python'
raw: apk --no-cache add python
tasks:
- name: 'Upgrade Operating System'
apk:
available: yes
upgrade: yes
- name: 'Install base software'
apk:
name: '{{ item }}'
state: latest
with_items:
- tmux
- vim
- git
Pythonパッケージがインストールされていないため、元のモジュールを使用しており、次のような出力が表示されます。
TASK [Upgrade Operating System] ******************************************************************************************************************************************
fatal: [172.16.160.254]: FAILED! => {"changed": false, "failed": true, "module_stderr": "Shared connection to 172.16.160.254 closed.\r\n", "module_stdout": "/bin/sh: /usr/bin/python: not found\r\n", "msg": "MODULE FAILURE", "rc": 0}
実際、Playbookはうまく機能しますが、「pythonのインストール」タスクが実行されるたびにステータスは「changed = 1」です。
等級を持たせることは可能ですか(要約を再生すると「changed = 0」、すべてが「ok = x」です)?それでは、私がこれをするのを手伝ってくれますか?
答え1
100%確かではありませんが、APKの仕組みのためにすでにほぼ等級がある可能性があると思います。私が知っている限り、すでにインストールされているパッケージを追加しようとすると、APKは何もせずに成功を返します。 (少なくともPython2がすでにインストールされているシステムにインストールしようとすると、そうなります。)唯一の注意点は、最新バージョンがあればパッケージをアップグレードすることです。しかし、プレイブックにシェルスクリプトを含めないと、この問題をapk version
解決する方法はないと思います。更新予定) 。