GNU/Linux >> Linux の 問題 >  >> Cent OS

CentOS 7 / RHEL 7 / Ubuntu 18.04 / 16.04&Debian9にAnsibleをインストールする方法

Ansible は無料の構成管理ツールであり、UnixライクなシステムやMicrosoftWindowsシステムの構成の管理をサポートしています。 Ansible SSHまたはPowerShellを介してノードを管理し、ノードにPythonをインストールします。

Ansible SSHを使用して数百のノードでソフトウェアの構成、管理、および展開を実行するのに役立ちます。操作全体を1つのコマンド ansibleで実行できます。 。ただし、場合によっては、展開のために複数のコマンドを実行する必要があります。

このガイドは、Ansibleを CentOS 7にインストールするのに役立ちます / Ubuntu 18.04 / Ubuntu 16.04 / Debian 9

アーキテクチャ

puppet、chef、CFEngineなどの他の構成管理ツールを使用する場合、サーバーソフトウェアは1台のマシンにインストールされ、クライアントマシンはエージェントを介して管理されます。 Ansibleでは、ノードはSSHを介してマシン(Ansibleサーバー)を制御することで管理されるため、ノードマシンでエージェントが実行されることはありません。

AnsibleはSSHを介してモジュールをノードにデプロイし、これらのモジュールはノードに一時的に保存され、JSONプロトコルを介してAnsibleサーバーと通信します。モジュールは、Python、Perl、 Rubyで記述されたスクリプトに他なりません。 、bashなど。

システム要件

制御機

Ansibleは、Python 2.6または2.7がインストールされている任意のマシンで実行できます(Windowsはコントロールマシンではサポートされていません)。

Red Hat、Debian、CentOS、OS X、すべてのBSDをサポートします。

クライアントノード

クライアントマシンには、少なくともPython 2(バージョン2.6以降)またはPython 3(バージョン3.5以降)が必要です

リモートノードでSELinuxを有効にしている場合は、libselinux-pythonをインストールする必要があります Ansibleでコピー/ファイル/テンプレート関連の関数を使用する前にノードでパッケージ化する

環境

ホスト名 IPアドレス OS 目的
server.itzgeek.local 192.168.1.10 CentOS 7 / Ubuntu 18.04 / Debian 9 制御機
node1.itzgeek.local 192.168.1.20 CentOS 7 管理対象ノード1
node2.itzgeek.local 192.168.1.30 Ubuntu 18.04 管理対象ノード2

AnsibleをCentOS7/ RHEL 7 / Ubuntu 18.04 / 16.04&Debian9にインストール

制御機のセットアップ

Ansibleをインストールするには、 CentOS 7 /RHEL7でEPELリポジトリを有効にする必要があります。 。

### CentOS 7 ###

yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

### RHEL 7 ###

subscription-manager repos --enable rhel-7-server-ansible-2.6-rpms

### Ubuntu 18.04 / Ubuntu 16.04 ###

sudo apt-get update
sudo apt-get install software-properties-common 
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get update 

### Debian 9 ###

sudo apt-get install dirmngr
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
echo "deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main" | sudo tee -a /etc/apt/sources.list.d/ansible.list
sudo apt-get update

Ansibleをインストールします。

### CentOS 7 / RHEL 7 & Fedora 28 ###

yum install -y ansible

### Ubuntu 18.04 / 16.04 & Debian 9 ###

sudo apt-get install -y ansible

Ansibleをインストールしたら、以下のコマンドを実行してAnsibleのバージョンを確認します。

ansible --version

出力:

ansible 2.6.3
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Jul 13 2018, 13:06:57) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]

管理対象ノードのセットアップ

クライアントマシンには、少なくともPython 2(バージョン2.6以降)またはPython 3(バージョン3.5以降)が必要です。

### CentOS 7 / RHEL 7 & Fedora ###

yum install -y python

### Ubuntu 18.04 / 16.04 & Debian 9 ###

sudo apt-get install -y python

SELinux(CentOS / RHEL / Fedora)

管理対象ノードでSELinuxを有効にしている場合は、Ansibleでコピー/ファイル/テンプレート関連の機能を使用する前に、以下のパッケージをノードにインストールする必要があります。

yum install -y libselinux-python

SSH認証

前述のように、Ansibleはリモート通信にネイティブOpenSSHを使用します。 Ansibleはパスワードなしの両方をサポートしています およびパスワード 管理対象ノードでコマンドを実行するための認証。

SSHキー認証(パスワードなし認証)

ssh認証に関しては、デフォルトでは、sshキー(パスワードなしの認証)を使用してリモートマシンで認証します。

読む CentOS 7 /RHEL7でSSHパスワードレスログインを設定する方法

上記のリンクはCentOS用ですが、その手順はUbuntu/Debianでも機能します。

パスワードなしの通信を設定したら、それを確認します。

ssh [email protected]
ssh [email protected]

これで、パスワードなしでリモートマシンにログインできるようになります。

パスワード認証

パスワード認証は、オプション --ask-passを指定することにより、必要に応じて使用することもできます。 。このオプションにはsshpassが必要です 制御機に。

### CentOS 7 / RHEL 7 & Fedora ### 

yum install -y sshpass 

### Ubuntu 18.04 / 16.04 & Debian 9 ### 

sudo apt-get update
sudo apt-get install -y sshpass
ここでは、このデモで、ansible制御ノードと管理対象ノード間のパスワードなしの通信を使用しました。
Ansibleサーバーのユーザー名=root
管理対象ノードのユーザー名=raj

Ansibleインベントリを作成する

/ etc / ansible / hosts を編集(または作成)します ファイル。 このファイルは、AnsibleがSSH経由で接続して管理するリモートホストのインベントリを保持します。

### CentOS 7 / RHEL 7 & Fedora ###

vi /etc/ansible/hosts

### Ubuntu 18.04 / 16.04 & Debian 9 ###

sudo nano /etc/ansible/hosts

1つ以上のリモートシステムを配置してグループ化します。ここでは、両方のマシンをデモサーバーグループに追加しました。

グループは、特定の用途のためにシステムを分類するために使用されます。グループを指定しない場合、グループ化されていないホストとして機能します。

[demo-servers]
192.168.1.20
192.168.1.30

最初のコマンド

次に、制御マシンからpingを実行するだけですべてのノードをチェックします。これを行うには、コマンド ansibleを使用します。 オプション付き-m (モジュールのロード)およびすべて (すべてのサーバー)。

# all servers - Works when both server's and client's user name are same (Passwordless)

ansible all -m ping

# all servers - "raj" is managed node's user (Passwordless)

ansible all -u raj -m ping

OR

# Only demo-servers group - "raj" is managed node's user (Passwordless)

ansible demo-servers -u raj -m ping

OR

# If you use password authendication

ansible -m ping all -u raj --ask-pass

出力:

192.168.1.20 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
192.168.1.30 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

上記の例では、pingモジュールを ansibleで使用しています。 リモートホストのすべてまたはグループにpingを実行するコマンド。

同様に、 ansibleでさまざまなモジュールを使用できます コマンドを使用すると、利用可能なモジュールをここで見つけることができます 。

ここでは、このデモで、ansible制御ノードと管理対象ノード間のパスワードなしの通信を使用しました。
Ansibleサーバーのユーザー名=root
管理対象ノードのユーザー名=raj
したがって、すべてのansibleコマンドは-u raj

リモートコマンド実行

今回はコマンドを使用します ansibleのモジュール リモートマシン情報を取得するコマンド。

たとえば、ホスト名を実行します コマンドを使用したコマンド 一度にリモートホストのホスト名を取得するモジュール。

ansible -m command -a "hostname" -u raj demo-servers

出力:

192.168.1.30 | SUCCESS | rc=0 >>
node2.itzgeek.local

192.168.1.20 | SUCCESS | rc=0 >>
node1.itzgeek.local

以下のコマンドでパーティションの詳細を取得します。

ansible -m command -a "df -hT" -u raj demo-servers

出力:

192.168.1.30 | SUCCESS | rc=0 >>
Filesystem     Type      Size  Used Avail Use% Mounted on
udev           devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs          tmpfs     395M  1.5M  393M   1% /run
/dev/sda4      ext4       94G  4.9G   84G   6% /
tmpfs          tmpfs     2.0G     0  2.0G   0% /dev/shm
tmpfs          tmpfs     5.0M  4.0K  5.0M   1% /run/lock
tmpfs          tmpfs     2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/loop0     squashfs   87M   87M     0 100% /snap/core/4486
/dev/loop3     squashfs  3.4M  3.4M     0 100% /snap/gnome-system-monitor/36
/dev/loop1     squashfs  1.7M  1.7M     0 100% /snap/gnome-calculator/154
/dev/loop2     squashfs  141M  141M     0 100% /snap/gnome-3-26-1604/59
/dev/loop4     squashfs   21M   21M     0 100% /snap/gnome-logs/25
/dev/loop5     squashfs   88M   88M     0 100% /snap/core/5328
/dev/loop6     squashfs   13M   13M     0 100% /snap/gnome-characters/69
/dev/sda1      vfat       93M  4.6M   88M   5% /boot/efi
tmpfs          tmpfs     395M   28K  395M   1% /run/user/120
tmpfs          tmpfs     395M   36K  395M   1% /run/user/1000
/dev/loop7     squashfs   15M   15M     0 100% /snap/gnome-logs/40

192.168.1.20 | SUCCESS | rc=0 >>
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs        50G  1.1G   49G   3% /
devtmpfs                devtmpfs  1.4G     0  1.4G   0% /dev
tmpfs                   tmpfs     1.5G     0  1.5G   0% /dev/shm
tmpfs                   tmpfs     1.5G  8.5M  1.4G   1% /run
tmpfs                   tmpfs     1.5G     0  1.5G   0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  188M  827M  19% /boot
/dev/mapper/centos-home xfs        46G   33M   46G   1% /home
tmpfs                   tmpfs     287M     0  287M   0% /run/user/1000
tmpfs                   tmpfs     287M     0  287M   0% /run/user/0

両方のノードの稼働時間と負荷の詳細を確認します。

 ansible -m command -a "uptime" -u raj demo-servers

出力:

192.168.1.30 | SUCCESS | rc=0 >>
 16:36:45 up 56 min,  3 users,  load average: 0.00, 0.00, 0.00

192.168.1.20 | SUCCESS | rc=0 >>
 16:36:45 up  1:09,  2 users,  load average: 0.05, 0.04, 0.05

特定のファイルの内容を確認することもできます。

ansible -m command -a "cat /etc/resolv.conf" -u raj demo-servers

出力:

192.168.1.30 | SUCCESS | rc=0 >>
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "systemd-resolve --status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 127.0.0.53

192.168.1.20 | SUCCESS | rc=0 >>
# Generated by NetworkManager
search itzgeek.local
nameserver 8.8.8.8
nameserver 192.168.1.1

以下のようにリダイレクトすることで、出力を任意のファイルに保存することもできます。

ansible -m command -a "cat /etc/resolv.conf" -u raj demo-servers > /tmp/ouput_file

cat /tmp/ouput_file

このようにして、ansibleを使用して多くのシェルコマンドを実行できます。

これで、Ansibleが CentOS 7に正常にインストールされました。 / Ubuntu 18.04 / Ubuntu 16.04 / Debian 9

続きを読むIT自動化用のAnsibleプレイブックを作成する方法

以上です。


Cent OS
  1. CentOS 7、Ubuntu 18.04、Debian9にApacheHadoopをインストールする方法

  2. CentOS 7 /RHEL7およびUbuntu18.04/Ubuntu16.04にRedisをインストールする方法

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

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

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

  3. CentOS/RHEL/Ubuntu に SSHFS をインストールする方法

  1. RHEL 8 /CentOS8にphpMyAdminをインストールする方法

  2. RHEL 8 /CentOS8にP7Zipをインストールする方法

  3. RHEL 8 /CentOS8にntfs-3gをインストールする方法