web-dev-qa-db-ja.com

Ansibleを介したicinga2ノードのセットアップ:マスターからチケットを取得するにはどうすればよいですか?

Icinga2ノードをセットアップするためにAnsibleプレイブックを作成しようとしていますが、各ホストは認証のためにIcinga2マスターからの一意のチケットを必要とします。今、私はチケットを取得するためにノードからマスターにSSH接続することを考えていますが、それは良い考えではないようです。また、Ansibleのプロンプトを使用してみましたが、Ansible Towerからプレイブックを実行しています。これは、明らかにそれをサポートしていません(stdinを待っているだけです)。

1
wmassingham

Ansibleでは、delegate_toパラメーターを使用して他のホストからファクトを取得できます。

Icinga2サーバーからチケットを取得するには、次のようなものが必要になります。

- name: Get ticket.
  command: icinga2 pki ticket --cn 'your cn'
  register: ticket
  delegate_to: icinga2_server

このタスクは、icinga2 pki ticketコマンドの出力をticket変数に格納します。チケットIDのみを取得するには、少しフィルタリングする必要がある場合があります。詳細については、 Ansibleの例のリポジトリ を参照してください。また、委任のためにinventoryにicinga2_serverが必要です。

3
Henrik Pingel

Knowhyの回答に加えて、PKDF2と呼ばれる暗号化/ハッシュアルゴリズムを使用して、Ansibleシステムでチケットを生成することもできます。

Puppetモジュールで同様のことを行いました。FQDNのチケットを計算するには、「TicketSalt」値を知っているだけで済みます。 (その場合、パスワードはFQDNです)

https://github.com/Icinga/puppet-icinga2/blob/master/lib/puppet/parser/functions/icinga2_ticket_id.rbhttps://github.com/Icinga/ puppet-icinga2/blob/development/lib/puppet/icinga2/pbkdf2.rb

Pythonも同様に: https://pypi.python.org/pypi/pbkdf2 のモジュールがあるようです

1
lazyfrosch

このフィルターを作成することになったので、共有する必要があります。 https://Gist.github.com/byoungb/35c8bbed924bb34f557023992b9b67d

from ansible.errors import AnsibleError


def icinga_ticket(value, salt):
    try:
    from pbkdf2 import PBKDF2
    except ImportError:
    raise AnsibleError('pbkdf2 library is required for `icinga_ticket` filter "pip install pbkdf2"')
    return PBKDF2(str(value), str(salt), iterations=50000).hexread(20)


class FilterModule(object):
    def filters(self):
    return dict(
        icinga_ticket=icinga_ticket,
    )

これをansibleのプラグインフィルターの場所plugins/filter /icinga.pyに保存します

このように使用します

- name: setup icinga node
  command: icinga2 node setup --ticket {{ 'web1.domain'|icinga_ticket('salt') }} --cn web1.domain --endpoint master.domain --zone web1.domain --master_Host master.domain --trustedcert /var/lib/icinga2/certs/master.domain.crt --accept-commands --accept-config
  notify: restart icinga
0
byoungb