web-dev-qa-db-ja.com

Ansibleの自作モジュールを使用してパッケージのリストがインストールされていることを表明する方法

私はAnsibleの比較的新しいユーザーです。 Linuxサーバーのいくつかのグループを調整するために使用します。私は現在、その使用法を拡張して使用しています Ansibleの自作モジュール

Homebrewモジュールを使用して、パッケージのリストがmacOSボックスにインストールされていることを表明したいと思います。これまでのところ、私ができる最善のことは、パッケージごとに別々の役割を作成することです。各役割は次のようになります。

- name: "htop"
  homebrew:
    name: htop
    state: present

Ansible aptモジュールを使用するときに以前に見たように、単一のロールでパッケージのリストを提供する方法が必要なようです。

任意のヒント?自作モジュール自体がこの種の操作を明示的にサポートする必要がありますか、それともAnsibleにもっと基本的なものがあるのでしょうか、それともPython自体が私が探しているものを提供するのでしょうか?

PS-私のmacOSマシンはすべてサーバーであると安全に想定できます。

1
James T Snell

私は多かれ少なかれ解決策を見つけました。私の役割は次のようになり、機能します。

- name: "brew favourites"
  homebrew: name={{ item }} state=present
  with_items:
    - htop
    - nmap
    - telnet
    - wget
    - nginx

拡張ノート

どのメカニズムがこの動作に関与しているのか、私にはよくわかりません。私はそれがAnsibleの外にあり、実際にはPythonismであるように感じます(これはLamdaですか?)。それが何であれ、それはこの種のものに対する一般的な解決策のテンプレートとして役立つ可能性があります。

Aptパッケージのリストを定義するために同様の説明があったのを見て、上記を試しました。そのアプローチは次のようになります。

- name: "Asserting apt packages"
  apt: pkg={{ item }} state=installed
  with_items:
    - aptitude
    - vim
    - htop
    - nmap
    - curl
    - screen
    - open-vm-tools

したがって、 apt module で、pkgパラメーターに多くのパッケージをリストしたかったことに注意してください。 homebrew modules 'コンテキストでは、pkgではなく、nameでした。

同様に、両方のAnsibleモジュールにはstateパラメーターがありますが、aptの場合、適切な値はinstalledであり、homebrewではpresentです。

したがって、この種の構文は、グローバルコンテキストのAnsibleに適用されると思います。また、モジュールはこれを認識しないか、明示的にサポートする必要があります。パワフル。

1
James T Snell