第1章 Automation Hub の Red Hat 認定済み、検証済み、および Ansible Galaxy コンテンツ
Ansible Certified Content Collections は、Red Hat Ansible Automation Platform のサブスクリプションに含まれています。Ansible Automation Hub を使用すると、あらゆる形式の Ansible コンテンツにアクセスし、独自のコレクションセットをキュレートできます。
Red Hat Ansible コンテンツには、次の 2 種類のコンテンツが含まれます。
- Ansible Certified Content Collections
- Ansible 検証済みコンテンツコレクション
Ansible Certified Content Collections または Ansible 検証済みコンテンツコレクションの両方を使用して、独自の自動化ライブラリーを構築できます。Ansible Certified Content Collections と Ansible 検証済みコンテンツコレクションの違いの詳細は、ナレッジベースの記事 Ansible Certified Content Collections and Ansible validated content、またはこのガイドの Ansible 検証済みコンテンツ を参照してください。
このコレクションは、パッケージをダウンロードして手動で更新できます。
Ansible Automation Hub を使用すると、要件ファイルまたは同期リストを作成して、関連する Red Hat Ansible Certified Content Collections をユーザーに配布できます。コレクションを Automation Hub にインストールするには、要件ファイルを使用してください。同期リストを管理できるのは、プラットフォーム管理者権限を持つユーザーだけであるためです。
要件ファイルを使用してコンテンツをインストールするには、次の手順を行う必要があります。
1.1. コンテンツを同期するための Ansible Automation Hub リモートリポジトリーの設定
リモート設定を使用して、console.redhat.com
でホストされている Ansible Certified Content Collections または Ansible Galaxy のコレクションと同期するように Private Automation Hub を設定します。
コンテンツを同期するために、rh-certified リモートから手動で作成した要件ファイルをアップロードできるようになりました。リモートは、外部コレクションソースからカスタムリポジトリーにコンテンツを同期できる設定です。
2.4 リリースでは、引き続きコンテンツを同期できますが、同期リストは非推奨となり、今後のバージョンで削除される予定です。
Ansible Galaxy と Ansible Automation Hub の相違点
Ansible Galaxy に公開されたコレクションは、Ansible コミュニティーによって公開された最新のコンテンツです。これらのコレクションに対する共同でのサポート対応は行われていません。Ansible Galaxy は、コンテンツにアクセスする Ansible コミュニティーを対象とした、推奨されるフロントエンドのディレクトリーです。
Ansible Automation Hub に公開されたコレクションは、Red Hat と特定パートナーの共同のお客様を対象としたものです。Ansible Automation Hub のコレクションにアクセスしてダウンロードするには、Ansible サブスクリプションが必要です。認定コレクションについては、Red Hat とパートナーが戦略的な関係のもと、お客様に共同でサポートを提供します。認定コレクションの中には、追加のテストと検証を受けたものもあります。
Ansible Galaxy で名前空間をリクエストする方法
Ansible Galaxy GitHub のイシューを通じて名前空間をリクエストするには、次の手順に従います。
- ansiblepartners@redhat.com にメールを送信します。
- Ansible Galaxy へのサインアップに使用した GitHub ユーザー名を記載します。
システムが検証できるように、少なくとも 1 回はログインする必要があります。
ユーザーが名前空間の管理者として追加されると、セルフサービスのプロセスを使用してさらに管理者を追加できます。
Ansible Galaxy 名前空間の命名制限
コレクションの名前空間は、Python モジュール名の規則に従う必要があります。つまり、コレクションにはすべて小文字の短い名前を付ける必要があります。読みやすさが向上する場合は、コレクション名にアンダースコアを使用できます。
1.1.1. Automation Hub でのトークン管理
コレクションをアップロードまたはダウンロードして Automation Hub と対話するには、API トークンを作成する必要があります。Automation Hub API トークンは、ansible-galaxy
クライアントを Red Hat Automation Hub サーバーに対して認証します。
Automation Hub は、Basic 認証やサービスアカウントでの認証をサポートしていません。トークン管理を使用して認証する必要があります。
API トークンを作成する方法は、使用している Automation Hub のタイプによって異なります。
- Automation Hub はオフライントークン管理を使用します。Automation Hub でのオフライントークンの作成 を参照してください。
- Private Automation Hub は API トークン管理を使用します。Private Automation Hub での API トークンの作成 を参照してください。
- Keycloak を使用して Private Automation Hub を認証する場合は、Automation Hub でのオフライントークンの作成 の手順に従ってください。
1.1.1.1. Automation Hub でのオフライントークンの作成
Automation Hub では、トークン管理 を使用してオフライントークンを作成できます。オフライントークンは、コンテンツを保護するために使用されるシークレットトークンです。
手順
- Red Hat Hybrid Cloud Console で Ansible Automation Platform に移動します。
-
ナビゲーションパネルから、
を選択します。 - Offline token で、 をクリックします。
- アイコンをクリックしてオフライントークンをコピーします。
- API トークンをファイルに貼り付けて、セキュアな場所に保存します。
オフライントークンは、コンテンツを保護するために使用されるシークレットトークンです。トークンはセキュアな場所に保存してください。
これで、Automation Hub をデフォルトのコレクションサーバーとして設定したり、ansible-galaxy
コマンドラインツールを使用してコレクションをアップロードしたりする場合に、オフライントークンを使用できるようになりました。
オフライントークンは、非アクティブな状態が 30 日間続くと期限切れになります。新しいオフライントークンの取得の詳細は、オフライントークンをアクティブな状態に維持する を参照してください。
1.1.1.2. Private Automation Hub での API トークンの作成
Private Automation Hub では、API トークン管理を使用して API トークンを作成できます。API トークンは、コンテンツを保護するために使用されるシークレットトークンです。
前提条件
- Red Hat Ansible Automation Platform の有効なサブスクリプション認証情報。
手順
- Private Automation Hub にログインします。
-
ナビゲーションパネルから、
を選択します。 - をクリックします。
- API トークンをコピーするには、 アイコンをクリックします。
- API トークンをファイルに貼り付けて、セキュアな場所に保存します。
API トークンは、コンテンツを保護するために使用されるシークレットトークンです。API トークンはセキュアな場所に保存してください。
API トークンは、Automation Hub をデフォルトのコレクションサーバーとして設定するか、ansible-galaxy
コマンドラインツールを使用してコレクションをアップロードできるようになりました。
API トークンには有効期限がありません。
1.1.1.3. オフライントークンをアクティブな状態に維持する
オフライントークンは、30 日の非アクティブ後に有効期限が切れます。オフライントークンを定期的に更新することで、オフライントークンの有効期限が切れないようにすることができます。
オンライントークンをアクティブにしておくと、アプリケーションがユーザーに代わってアクションを実行する場合に便利です。たとえば、ユーザーがオフラインのときにアプリケーションが定期的なデータバックアップを実行できます。
オフライントークンの有効期限が切れた場合は、新しいトークンを取得 する必要があります。
手順
次のコマンドを実行して、トークンの有効期限が切れないようにします。
curl https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token -d grant_type=refresh_token -d client_id="cloud-services" -d refresh_token="{{ user_token }}" --fail --silent --show-error --output /dev/null
1.1.2. rh-certified リモートリポジトリーの設定および Red Hat Ansible Certified Content Collection の同期
rh-certified リモートリポジトリーを編集して、console.redhat.com でホストされている Automation Hub から Private Automation Hub にコレクションを同期できます。デフォルトでは、Private Automation Hub rh-certified
リポジトリーには、Ansible Certified Content Collections のグループ全体の URL が含まれています。
組織で指定されたコレクションのみを使用するには、Private Automation Hub 管理者は、手動で作成した要件ファイルを rh-certified
リモートからアップロードできます。
要件ファイルに、A
、B
、および C
コレクションがあり、使用する console.redhat.com に新しいコレクション X
を追加する場合は、Private Automation Hub の要件ファイルに X
を追加して同期する必要があります。
前提条件
- 有効な Ansible リポジトリーコンテンツの変更 権限を持っている。権限の詳細は、アクセス管理と認証 を参照してください。
- console.redhat.com で Automation Hub がホストするサービスから同期 URL および API トークンを取得している。
- ポート 443 へのアクセスを設定している。これは、認定コレクションを同期するために必要です。詳細は、「インストール計画」の ネットワークポートおよびプロトコル の章にある Automation Hub の表を参照してください。
手順
- Ansible Automation Platform にログインします。
-
ナビゲーションパネルから、
を選択します。 - rh-certified リモートリポジトリーで、 をクリックします。
- URL フィールドに、Sync URL を貼り付けます。
- Token フィールドに、console.redhat.com から取得したトークンを貼り付けます。
console.redhat.com の組織の同期リストと Private Automation Hub の間でコレクションを同期できるようになりました。
-
ナビゲーションパネルから、
を選択します。rh-certified の横にある アイコン ⋮ をクリックし、Sync repository を選択します。 表示されるモーダルで、次のオプションを切り替えることができます。
- Mirror: リポジトリーのコンテンツを、リモートリポジトリーのコンテンツにミラーリングする場合に選択します。
- Optimize: リモートサーバーから変更が報告されないときにのみ同期する場合に選択します。
- をクリックして同期を完了します。
検証
Sync status 列が更新され、Red Hat Certified Content Collections の同期が成功したかどうかが通知されます。
-
に移動して、コレクションのコンテンツが正常に同期されたことを確認します。
1.1.3. コミュニティーリモートリポジトリーの設定および Ansible Galaxy コレクションの同期
community リモートリポジトリーを編集して、Ansible Galaxy から選択したコレクションを Private Automation Hub に同期できます。デフォルトでは、Private Automation Hub コミュニティーリポジトリーは galaxy.ansible.com/api/
に送信されます。
前提条件
- Modify Ansible repo content 権限がある。権限の詳細は、アクセス管理と認証 を参照してください。
次の例のように、Ansible Galaxy から同期するコレクションを識別する
requirements.yml
ファイルがある。requirements.yml の例
collections: # Install a collection from Ansible Galaxy. - name: community.aws version: 5.2.0 source: https://galaxy.ansible.com
手順
- Ansible Automation Platform にログインします。
-
ナビゲーションパネルから、
を選択します。 - Community リモートの Details タブで、 をクリックします。
-
YAML requirements フィールドに、
requirements.yml
ファイルの内容を貼り付けます。 requirements.yml
ファイルで識別されたコレクションを、Ansible Galaxy から Private Automation Hub に同期できるようになりました。-
ナビゲーションパネルから、
を選択します。community リポジトリーの横にある アイコン ⋮ をクリックし、Sync repository を選択して、Ansible Galaxy と Ansible Automation Hub の間でコレクションを同期します。 表示されるモーダルで、次のオプションを切り替えることができます。
- Mirror: リポジトリーのコンテンツを、リモートリポジトリーのコンテンツにミラーリングする場合に選択します。
- Optimize: リモートサーバーから変更が報告されないときにのみ同期する場合に選択します。
- をクリックして同期を完了します。
検証
Sync status 列が更新され、Ansible Automation Hub への Ansible Galaxy コレクションの同期が成功したかどうかが通知されます。
-
に移動し、Community を選択して同期が成功したことを確認します。
1.1.4. プロキシー設定
Private Automation Hub がネットワークプロキシーの背後にある場合は、リモートでプロキシーを設定して、ローカルネットワーク外にあるコンテンツを同期できます。
前提条件
- 有効な Ansible リポジトリーコンテンツの変更 権限を持っている。権限の詳細は、アクセス管理と認証 を参照してください。
- ローカルネットワーク管理者からのプロキシー URL および認証情報を持っている。
手順
- Ansible Automation Platform にログインします。
-
ナビゲーションパネルから、
を選択します。 - rh-certified リモートまたは Community リモートで、 アイコン ⋮ をクリックし、Edit remote を選択します。
- Show advanced options ドロップダウンメニューを展開します。
- プロキシー URL、プロキシーユーザー名、およびプロキシーパスワードを適切なフィールドに入力します。
- をクリックします。
1.1.5. 要件ファイルの作成
要件ファイルを使用して、Automation Hub にコレクションを追加します。要件ファイルは YAML 形式で、Automation Hub にインストールするコレクションをリストしたものです。インストールするコレクションをリストした requirements.yml ファイルを作成したら、インストールコマンドを実行して、コレクションを Hub インスタンスに追加します。
標準の requirements.yml
ファイルには、次のパラメーターを含めます。
-
name
:<namespace>.<collection_name>
という形式のコレクション名 -
version
: コレクションのバージョン番号
手順
要件ファイルを作成します。
YAML 形式の要件ファイル内に、コレクション情報を次のように指定します。
collections: name: namespace.collection_name version: 1.0.0
- インストールする各コレクションの情報をリストした要件ファイルを作成したら、ファイルが配置されているディレクトリーに移動して、次のコマンドを実行します。
$ ansible-galaxy collection install -r requirements.yml
1.1.5.1. コマンドラインから個々のコレクションをインストールする
Automation Hub に個々のコレクションをインストールするには、次のコマンドを実行します。
$ ansible-galaxy collection install namespace.collection_name