このステップバイステップガイドでは、LinuxにAnsibleをインストールして構成する手順について説明します。また、LinuxでAnsible homelabをセットアップして、ansibleの基本を学ぶ方法についても説明します。
1。はじめに
Ansibleは、ソフトウェア環境で「N」個のタスクを自動化できるIT自動化ツールです。 Ansibleとその機能については、「Ansibleの概要」をご覧ください。 ガイド。
Ansibleは明らかに大規模な構成管理用に設計されています。目標が学習し、環境をすばやく再現できるようにすることである場合、あなたは正しい方向に進んでいます!
Ansibleはエージェントレスです 建築。意味-管理対象ノードで実行されているAnsibleエージェント/プロセスはありません。
Ansileの紹介記事ですでに述べたように、ansibleには2つのタイプのノードがあります。
- マスター/コントローラーノード -ansibleがインストールされるサーバー/ワークステーション。このノードから、すべてのansibleプレイブックとansibleコマンドを実行します。
- 管理対象ノード -ansibleを使用して管理されるホストのリスト。
すべての管理対象ノードは、同じ配布バージョンまたはタイプで実行されている必要はありません。さまざまな種類のLinuxを管理対象ノードとして使用できます。
コントローラと管理対象ノード間の通信は、sshキーベースの認証を使用して行われます。 。
このハンズオンガイドでは、LinuxディストリビューションでAnsibleラボをセットアップする方法を説明します。
注:
- Windowsをコントローラーノードとして使用することはできません。
- 複数のコントローラーノードを構成することが可能です。
Ansibleを使い始める前に、Ansibleのhomelabセットアップの図解をお見せしましょう。
2。 3ノードのansibleラボのアーキテクチャ図
次の図解は、ラボがどのように見えるかを絵で表したものです。
デモンストレーションの目的で、Ubuntu 20.04にコントローラーノードをセットアップし、CentOS8とUbuntu21.04に2つの管理対象ノードをセットアップしています。
3。 LinuxでのAnsibleのインストールと構成
まず、LinuxでAnsible管理対象ノードをセットアップする方法を説明します。
3.1。 LinuxにAnsibleをインストールする
AnsibleはPythonで記述されているため、ansibleが機能するには、LinuxマシンにPythonがインストールされている必要があります。
幸い、すべてのLinuxディストリビューションにはPythonがプリインストールされています。 AnsibleはPython2.7とPython3.5以降の両方をサポートしています。
マシンにインストールされているPythonのバージョンを確認するには、次のコマンドを使用できます。出力は、Pythonがディストリビューションでどのように設定されているかによって異なる場合があります。
$ which python python2 python3 /usr/bin/python2 /usr/bin/python3
Pythonのバージョンを確認してください:
$ python2 --version Python 2.7.18rc1
$ python3 --version Python 3.8.5
$ compgen -c python | grep -P '^python..\d' python3.8 python3.8-config python2.7
Linuxにansibleをインストールする方法は2つあります。
- オペレーティングシステムのパッケージマネージャーを使用する
- PIPの使用 -Pythonパッケージマネージャー
3.1.1。システムパッケージマネージャーを使用してAnsibleをインストールする
まず、ディストリビューションのパッケージマネージャーを使用してansibleをインストールする方法を説明します。 Linuxディストリビューションに基づいて、次のコマンドを実行します。
Arch Linux、EndeavourOS、Manjaro LinuxにAnsibleをインストールします:
$ sudo pacman -S ansible
Debian:
/etc/apt/sources.list
を編集します ファイル:
$ sudo nano /etc/apt/sources.list
次の行を追加します:
deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main
次に、次のコマンドを実行します。
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 $ sudo apt update $ sudo apt install ansible
Fedora:
$ sudo dnf install ansible
CentOS、RHEL、AlmaLinux、Rocky Linux:
$ sudo dnf install epel-release
$ sudo dnf install ansible
Ubuntuとその派生物:
$ sudo apt update $ sudo apt install software-properties-common $ sudo add-apt-repository --yes --update ppa:ansible/ansible $ sudo apt install ansible
ディストリビューションには、古いバージョンのAnsibleが付属している場合があります。更新されたAnsibleバージョンをシステムにインストールする場合は、 Pipを使用できます。 、Pythonパッケージマネージャー。
3.1.2。 Pipを使用してAnsibleをインストールする
まず、次のコマンドを実行して、PIPがインストールされているかどうかを確認します。
$ which pip pip3 /usr/bin/pip /usr/bin/pip3
$ pip --version pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
$ pip3 --version pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
PIPがインストールされていない場合は、次のコマンドを実行してインストールします。
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python3 get-pip.py --user
PIPをインストールしたら、次のコマンドを実行してansibleをインストールします。
$ sudo python3 -m pip install ansible
これにより、最新のAnsibleバージョンがインストールされます。
以下のように、特定のAnsibleバージョン(2.9など)をインストールすることもできます。
$ sudo python3 -m pip install 'ansible==2.9'
Ansibleをインストールした後、次のコマンドを実行して、ansibleのバージョンを確認します。
$ ansible --version
このコマンドは、ホストファイル、構成ファイル、およびansibleバイナリファイルの場所と、インストールされているAnsibleのバージョンに関する情報を提供します。
出力例:
ansible 2.9.0 config file = /etc/ansible/ansible.cfg configured module search path = ['/home/karthick/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible executable location = /usr/local/bin/ansible python version = 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]
3.2。 Ansibleを構成する
前述のように、Ansibleはssh
を使用して管理対象ノードと通信します 認証プロトコル。
sshキーペアを作成し、それらをすべての管理対象ノードに配布します。したがって、ansibleコマンドが送信されるたびに、これらのキーを使用して管理対象ノードで認証されます。
3.2.1。管理対象ノードのSSHキーペアを生成する
ansibleという名前の新しいユーザーを作成します コントローラノードと管理対象ノードの両方で。
$ sudo useradd ansible ##create user $ sudo passwd ansible ##set password for ansible user.
Ansibleユーザーとしてログイン/切り替え、コマンドを使用してsshキーペアを作成します:
$ su - ansible
$ ssh-keygen -t rsa
このコマンドは、SSHキーのペアを生成します。
次に、公開鍵を配布します すべての管理対象ノードに。
ssh-copy-id
公開鍵をターゲットノードにコピーするコマンド。
ssh-copy-idコマンドを使用して公開鍵をターゲットノードにコピーするには、次のコマンドを実行します。
$ ssh-copy-id -i ~/.ssh/id_rsa [email protected]
ノードがさらにある場合は、 for loop
を使用します sshキーをすべてのターゲットノードにコピーします。
このガイドでは、2つの管理対象ノードがあり、それらに centos1という名前を付けています。 (centos8)および ubuntu1 (ubuntu 20.04)。キーを両方のノードにコピーするために、次のコードを使用しました:
$ for node in centos1 ubuntu1; do ssh-copy-id -i /home/ansible/.ssh/id_rsa [email protected]${node} done
次に、管理対象ノードにログインして、キーベースの認証が正常に機能するかどうかを確認します。
$ ssh [email protected]
これで、ansibleのセットアップが完了しました。次のステップとして、インベントリファイルを作成し、管理対象ホストに対していくつかのansibleコマンドを実行する必要があります。
3.2.2。 Ansible構成のテスト
Ansibleには、アドホックを送信するために必要な2つの重要なファイルがあります またはプレイブック コマンド。
-
Ansible.cfg
--ansible構成ファイル。 Hosts
-ホストの詳細が提供されているインベントリファイル。
別の記事で、構成ファイルとインベントリファイルについてさらに詳しく説明します。現時点では、最初のansibleコマンドを実行するために、インベントリファイルに管理対象ノードのホスト名を追加する必要があります。
Ansible設定ファイルは/etc/ansible/ansible.cfg
にあります ファイル。 ansible version
を実行して、この詳細を取得することもできます コマンド:
$ ansible --version ansible 2.9.0 config file = /etc/ansible/ansible.cfg configured module search path = ['/home/karthick/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible executable location = /usr/local/bin/ansible python version = 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]
ansible.cfg
を開きます ファイルを作成し、パラメータインベントリを探します。このパラメーターは、実行時にansibleによって参照され、インベントリファイルのパスを取得します。
$ sudo grep -iw "^#Inventory" /etc/ansible/ansible.cfg #inventory = /etc/ansible/hosts
インベントリはデフォルトで/etc/ansible/hosts
を指します ファイル。 hosts
を開きます ファイルを作成し、管理対象ノードのホスト名/IPアドレスを追加します。
DNSからIPへのマッピングがあるので、ホストのファイルにdns名を付けました。 IPアドレスを指定することもできます。
すべてがansibleでタスクを実行するように設定されています!
"Hello world"
に似ています プログラミングのプログラムであるansibleには、ping
コントローラと管理対象ノード間の接続をチェックする最初のコマンドとしてのモジュール。
ping
モジュールは管理対象ノードに到達し、 pong
として使用および応答できるPythonインタープリターがあるかどうかを確認します。 。
$ ansible all -m ping
-i
を使用してhostsファイルを明示的に指定することもできます 以下のようなフラグ:
$ ansible all -m ping -i flag <path-to-host-file>
これで、プレイしたいモジュールでプレイを開始できます。
コントローラノードをさらに追加する場合は、SSHキーをコントローラノードから新しいノードにコピーし、ホストのファイルにIP/DNSエントリを追加するだけです。そして、ansibleは新しく追加された管理対象ノードの取得を開始できます。とても簡単です!
結論
このガイドでは、LinuxにAnsibleをインストールして構成する方法について説明しました。また、3ノードのAnsibleホームラボを手動でセットアップする方法も示しました。
Vagrantを使用してansibleラボを設定するなどの他の自動化されたソリューションがあります またはDocker 。これらのトピックについては、今後の記事で取り上げます。
Ansibleは広大なトピックです! Ansibleの基本のみを取り上げました。 公式のAnsibleドキュメントを確認してください Ansibleの使用法について詳しく知るために。
次を読む:
- LinuxでのVagrantとVirtualboxによる自動化されたAnsibleラボのセットアップ
- Ansibleインベントリおよび構成ファイル