このチュートリアルでは、インターネットにアクセスできないAnsibleコントロールノードにAnsibleコンテンツコレクションをインストールする方法と場所を示します。プロセスは単純明快ですが、一部のユーザーはインストール場所と構成に混乱しています。
なぜインターネットがないのですか?
一部の組織では、サーバーがインターネットに直接接続することを許可していません。また、プロキシサーバー経由でもインターネット接続が許可されない場合があります。これは標準のポリシーであり、重要なサーバーを使用している場合は、すでにこれを経験している可能性があります。また、いくつかのツールや必要なファイルをインストールすることは、インターネットアクセスなしでは簡単な作業ではありません。
[読者も気に入っています:危機的状況以降のRedHatサブスクリプションからどのように利益を得るか]
インターネットからのAnsibleコレクションのインストール
ansible-galaxy
を使用して、AnsibleGalaxyからAnsibleコレクションを直接インストールできます。 指図。これは、コレクション名とインストールパスを指定するだけの簡単な作業です。 ansible-galaxy
コマンドは、サブディレクトリの作成とコレクションのダウンロードタスクを処理します。
$ ansible-galaxy collection install community.kubernetes -p ./collections
詳細については、Ansibleのドキュメントまたはこのハウツーガイドを参照してください。
インターネットなしでAnsibleコレクションをインストールする
デフォルトでは、ansible-galaxy
galaxy.ansible.comまたはGALAXY_SERVERで構成したサーバーからAnsibleコレクションをインストールしようとします 構成(例:自動化ハブ)。このシナリオはインターネットアクセスのないAnsibleコントロールノードであるため、これについては説明しません。ただし、インターネットにアクセスできるワークステーションまたはラップトップを使用して、インターネットからコレクションコンテンツをダウンロードしてから、切断されたAnsibleコントロールノードにコンテンツを転送することはできます。
コレクションを見つけてダウンロードし、オフラインで使用します
このデモでは、 Kubernetesをインストールします コミュニティからのコレクション(community.kubernetes
。
ワークステーションまたはラップトップ(インターネットアクセスあり)から、galaxy.ansible.comにアクセスして、community.kubernetes
を見つけます。 コレクション。
Tarballのダウンロードをクリックします リンクして、オフラインで使用するためのアーカイブとしてコレクションをダウンロードします。
アーカイブファイルを、Ansibleコントロールノードであるターゲットマシンに転送します:
$ scp ~/Downloads/community-kubernetes-1.2.0.tar.gz user@ansilbe-controlnode:~/
(または、WinSCP、SFTPなどの他の方法を使用できます。)
コントロールノードにAnsibleコレクションをデプロイする
次に、Ansibleコレクションを保持する場所を準備する必要があります。システムディレクトリ(/usr/share/ansible/collections
)に保存できます )またはユーザーのホームディレクトリ(~/.ansible/collections
)。ただし、管理を改善するために、プロジェクトに基づいてコレクションを保持することをお勧めします。
この場合、collections
という名前のディレクトリを作成します プロジェクトディレクトリの下。この例では、ローカルユーザーの名前はdevopsです。
$ pwd
/home/devops/ansible-collections-demo
$ mkdir collections
方法1-ダウンロードしたAnsibleコレクションでansible-galaxyコマンドを使用する
同じansible-galaxy
を使用します コマンドを実行しますが、インターネットからコレクションコンテンツをインストールする代わりに、使用するコレクションアーカイブファイルを指定します。
$ pwd
/home/devops
$ ansible-galaxy collection install ~/Downloads/community-kubernetes-1.2.0.tar.gz \
-p collections/
Starting galaxy collection install process
Process install dependency map
Starting collection install process
Installing 'community.kubernetes:1.2.0' to '/home/devops/devops/workshops/ansible-collections-demo/collections/ansible_collections/community/kubernetes'
community.kubernetes (1.2.0) was installed successfully
とても簡単で簡単です。
方法2-Ansibleコレクションのコンテンツを手動で抽出して整理する
前述のように、ansible-galaxy
を使用している場合 コマンド、Ansibleがサブディレクトリを処理しますが、ここではすべてを手動で作成する必要があります。これは、ansible-galaxy
の場合にのみ必要です。 コマンドはオフラインアーカイブでは機能しません。
次の形式でサブディレクトリを作成します。
[PROJECT_DIR]/[COLLECTION_PATH]/ansible_collections/[AUTHOR]/[COLLECTION_NAME]
場所:
- [PROJECT_DIR]-プロジェクトディレクトリ(
/home/devops/ansible-collections-demo
) - [COLLECTION_PATH]-これは
collections
です この場合。 - ansible_collections-Ansibleがコレクションに期待するパス
- [著者]-コレクションを維持/提供する個人またはベンダー(例:コミュニティ )
- [COLLECTION_NAME]-コレクション名(例:
kubernetes
)
図のようにディレクトリを作成します:
$ mkdir -p collections/ansible_collections/community/kubernetes
コレクションのコンテンツを抽出し、collections
にコピーします ディレクトリ:
$ pwd
/home/devops/ansible-collections-demo
$ tar -xf ~/Downloads/community-kubernetes-1.2.0.tar.gz \
-C collections/ansible_collections/community/kubernetes
内容を確認します:
$ ls -l collections/ansible_collections/community/kubernetes/
total 120
-rw-rw-r-- 1 devops devops 36 Feb 26 18:13 bindep.txt
-rw-rw-r-- 1 devops devops 15739 Feb 26 18:13 CHANGELOG.rst
drwxrwxr-x 3 devops devops 4096 Feb 26 18:13 changelogs
-rw-rw-r-- 1 devops devops 107 Feb 26 18:13 codecov.yml
-rw-rw-r-- 1 devops devops 3278 Feb 26 18:13 CONTRIBUTING.md
-rw-rw-r-- 1 devops devops 857 Feb 26 18:13 galaxy.yml
-rw-rw-r-- 1 devops devops 35148 Feb 26 18:13 LICENSE
-rw-rw-r-- 1 devops devops 1112 Feb 26 18:13 Makefile
drwxrwxr-x 2 devops devops 4096 Feb 26 18:13 meta
drwxrwxr-x 3 devops devops 4096 Feb 26 18:13 molecule
drwxrwxr-x 10 devops devops 4096 Feb 26 18:13 plugins
-rw-rw-r-- 1 devops devops 8542 Feb 26 18:13 README.md
-rw-rw-r-- 1 devops devops 35 Feb 26 18:13 requirements.txt
-rw-rw-r-- 1 devops devops 50 Feb 26 18:13 setup.cfg
-rw-rw-r-- 1 devops devops 20 Feb 26 18:13 test-requirements.txt
drwxrwxr-x 5 devops devops 4096 Feb 26 18:13 tests
drwxrwxr-x 2 devops devops 4096 Feb 26 18:13 utils
コレクションを取得するようにAnsibleを構成する
Ansibleは~/.ansible/collections:/usr/share/ansible/collections
でコレクションを検索します 、これは COLLECTIONS_PATHSのデフォルト値です 。
コレクションコンテンツの場所についてAnsibleに通知する必要があります。これを行うには、ansible.cfg
を構成します COLLECTIONS_PATHSを使用 エントリ。デフォルトファイル/etc/ansible/ansible.cfg
では何も編集する必要はありません。 。代わりに、独自のansible.cfg
を作成してください プロジェクトディレクトリの下にあり、独自のプロジェクトのすべての構成を保持します。次に例を示します:
$ pwd
/home/devops/ansible-collections-demo
$ cat ansible.cfg
[defaults]
inventory = ./inventory
COLLECTIONS_PATHS = ./collections
次にディレクトリの内容を確認します:
$ ls -l
total 16
-rw-rw-r-- 1 devops devops 309 Dec 22 22:40 ansible.cfg
drwxrwxr-x 3 devops devops 4096 Feb 26 18:09 collections
-rw-rw-r-- 1 devops devops 369 Feb 26 18:36 k8s-cluster-info.yaml
デプロイされたAnsibleコレクションを確認する
ansible-galaxy
を使用してコレクションを確認します コマンド:
$ ansible-galaxy collection list
# /home/devops/ansible-collections-demo/collections/ansible_collections
Collection Version
-------------------- -------
community.kubernetes 1.2.0
今すぐプレイブックでコレクションを使用してください。
ansible-doc
を使用してコンテンツアクセスを簡単に収集できます コマンドを実行すると、コレクションとモジュールが正しくインストールされている場合にドキュメントが表示されます。
$ ansible-doc community.kubernetes.k8s_info
k8s-cluster-info.yaml
という簡単なプレイブックを調べます 以下に、Kubernetesクラスターのポッド情報を表示します。
---
- name: Ansible k8s Test
hosts: localhost
tasks:
- name: Get a list of all pods from any namespace
community.kubernetes.k8s_info:
kind: Pod
register: pod_list
- name: Display k8s Cluster details
debug:
msg: "{{ pod_list }}"
注 :他の必要なPython依存関係(openshift
など)をインストールする必要があります 、PyYAML
など)モジュールが動作するようにします。このトピックはこの記事の範囲外ですが、標準の手順を参照することができます(または、Pythonモジュールをオフラインでインストールする方法を読むことができます)。
[APIオーナーズマニュアル:効果的なAPIプログラムの7つのベストプラクティス]
まとめ
Red Hat Ansible Automation Platformの導入により、ネットワーク内で整理されたコンテンツを維持できます。ただし、Red Hat Ansible Towerと同様に、これは手動で設定する必要があります。詳細については、AutomationHubの詳細をご覧ください。