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

LinuxでのAnsibleのインストールと構成

このステップバイステップガイドでは、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ラボをセットアップする方法を説明します。

注:

  1. Windowsをコントローラーノードとして使用することはできません。
  2. 複数のコントローラーノードを構成することが可能です。

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つあります。

  1. オペレーティングシステムのパッケージマネージャーを使用する
  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つの重要なファイルがあります またはプレイブック コマンド。

  1. Ansible.cfg --ansible構成ファイル。
  2. 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インベントリおよび構成ファイル

Linux
  1. LinuxにAnsibleをインストールしてテストする方法

  2. Fedora35にAnsibleをインストールして設定する方法

  3. Linux に EMC PowerPath をインストールして構成する方法

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

  2. Rocky Linux /CentOS8にAnsibleをインストールして構成する方法

  3. UNIX / Linux に Alfresco をインストールして構成する 12 の手順

  1. Redhat EnterpriseLinux8にAnsibleをインストールして設定する方法

  2. LinuxにNagiosをインストールして設定する方法

  3. UbuntuLinuxにMemcachedをインストールして構成する方法