GNU/Linux >> Linux の 問題 >  >> Linux

リモートホストの OS バージョンを取得するために Ansible プレイブックを作成する方法

次の Jinja2 式のいずれかを使用します:

{{ hostvars[inventory_hostname].ansible_distribution }}
{{ hostvars[inventory_hostname].ansible_distribution_major_version }}
{{ hostvars[inventory_hostname].ansible_distribution_version }}

ここで:

  • hostvars そして ansible_... 組み込みであり、Ansible によって自動的に収集されます
  • ansible_distribution Ansible によって処理されているホストです

たとえば、Ansible ロール test_role を実行しているとします。 ホスト host.example.com に対して CentOS 7 ディストリビューションの実行:

---
- debug:
    msg: "{{ hostvars[inventory_hostname].ansible_distribution }}"
- debug:
    msg: "{{ hostvars[inventory_hostname].ansible_distribution_major_version }}"
- debug:
    msg: "{{ hostvars[inventory_hostname].ansible_distribution_version }}"

あなたに与えます:

TASK [test_role : debug] *******************************************************
ok: [host.example.com] => {
    "msg": "CentOS"
}

TASK [test_role : debug] *******************************************************
ok: [host.example.com] => {
    "msg": "7"
}

TASK [test_role : debug] *******************************************************
ok: [host.example.com] => {
    "msg": "7.5.1804"
}

構造化された方法:

- hosts: all
  become: no
  vars:
    output_file: os.csv
  tasks:
    - block:
        # For permisison setup.
        - name: get current user
          command: whoami
          register: whoami
          run_once: yes

        - name: clean file
          copy:
            dest: "{{ output_file }}"
            content: 'hostname,distribution,version,release'
            owner: "{{ whoami.stdout }}"
          run_once: yes

        - name: fill os information
          lineinfile:
            path: "{{ output_file }}"
            line: "{{ ansible_hostname }},\
              {{ ansible_distribution }},\
              {{ ansible_distribution_version }},\
              {{ ansible_distribution_release }}"
          # Tries to prevent concurrent writes.
          throttle: 1
      delegate_to: localhost

os.csv という名前のコンマ区切りファイルを作成します 実行フォルダにあります。 line: を編集したい任意の変数を使用できます .


Linux
  1. AnsiblePlaybookの作成方法

  2. 追加の変数をAnsibleプレイブックに渡す方法

  3. Ansibleを使用してLinuxユーザーを作成する方法

  1. Ansibleでファイルを作成する方法

  2. Ansibleプレイブックを使用してソフトウェアパッケージをインストールする方法

  3. gnome でデスクトップのパスを取得する方法

  1. Ansible Playbook:Playbookを作成および構成する方法

  2. Ansible Playbookでタグを使用する方法(例)

  3. Ansibleを使用してリモートWindowsホストを管理する方法