生のモジュールを使ってプレイブックを冪等にする方法は?

生のモジュールを使ってプレイブックを冪等にする方法は?

私のサーバーにはデフォルトで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解決する方法はないと思います。更新予定) 。

おすすめ記事