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

切断されたAnsibleコントロールノードにAnsibleコレクションをインストールする方法

このチュートリアルでは、インターネットにアクセスできない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の詳細をご覧ください。


Linux
  1. Node.jsをFedora35/Fedora34にインストールする方法

  2. CentOS7にAnsibleをインストールする方法

  3. OracleLinux8にAnsibleをインストールする方法

  1. AlmaLinux8にAnsibleをインストールする方法

  2. Debian11にAnsibleをインストールする方法

  3. CentOS8にAnsibleをインストールする方法

  1. Ubuntu20.04にAnsibleをインストールして構成する方法

  2. UbuntuにAnsibleをインストールする方法

  3. Ubuntu 18.04 に NodeJ をインストールする方法