先搭建Ansible服务器然后开始运行

使用ansible进行服务器架构搭建

    概要
▼ansibleサーバ
OS : CentOS7
IP : 192.168.119.20

▼ansibleクライアント
OS : CentOS7
IP : 192.168.119.21
    最新化
yum update
    SElinuxの無効化
# getenforce 
Enforcing

# vi /etc/selinux/config
SELINUX=disabled

# reboot

# getenforce
Disabled
    firewallの無効化
systemctl stop firewalld
systemctl disable firewalld
    ansibleユーザの作成
useradd ansible
    sudo 許可ユーザに設定
visudo
==========
追加
# User rules for ansible
ansible ALL=(ALL) NOPASSWD:ALL
==========
    公開鍵認証を作成
su - ansible
mkdir /home/ansible/.ssh
cd /home/ansible/.ssh
ssh-keygen -t rsa
==========
Enter file in which to save the key (/home/ansible/.ssh/id_rsa): [enter]
Enter passphrase (empty for no passphrase): [enter]
Enter same passphrase again: [enter]
==========
chmod 700 /home/ansible/.ssh
chown -R ansible:ansible /home/ansible/.ssh
    epelインストール
sudo yum install epel-release
    ansibleインストール(最新)
sudo yum install ansible --enablerepo=epel
    ansibleインストール(バージョン指定)
sudo pip install ansible\==2.4.3

只要您在这里进行安装,/etc/ansible 将不会自动生成。

    バージョン確認
$ ansible --version
ansible 2.9.10
  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, Apr  2 2020, 13:16:51) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]

Ansible客户端配置

    ユーザの作成
useradd ansible
    sudo 許可ユーザに設定
visudo
==========
追加
# User rules for ansible
ansible ALL=(ALL) NOPASSWD:ALL
==========
    サーバ側から公開鍵の転送
scp /home/ansible/.ssh/id_rsa.pub user@192.168.119.21:/var/tmp
    公開鍵認証を作成
su - ansible
mkdir /home/ansible/.ssh
cd /home/ansible/.ssh
mv /var/tmp/id_rsa.pub /home/ansible/.ssh/id_rsa.pub
mv id_rsa.pub authorized_keys
chmod 700 /home/ansible/.ssh
chmod 600 /home/ansible/.ssh/authorized_keys
chown -R ansible:ansible /home/ansible/.ssh
    [ansibleサーバ]ログインできることの確認
ssh ansible@192.168.119.21

在ansible服务器上修改配置文件

    [ansibleサーバ]管理対象ホストの変更
# /etc/ansible配下の権限を変更
chown -R ansible:ansible /etc/ansible
su - ansible

# デフォルトのファイルを退避
cp -a /etc/ansible/hosts{,.old}

# ファイルの中身を空にする
:> /etc/ansible/hosts

# /etc/ansible/hosts に ansibleクライアントのIPアドレスの記載
vi /etc/ansible/hosts
==========
[ansible_client]
192.168.119.21
==========
# 疎通確認
ansible -m ping ansible_client
==========
192.168.119.21 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
==========

我成功地将服务器和客户端连接起来了。

轻松地更改客户端配置

    [ansibleサーバ]クライアントの設定変更内容を記載

本文中包含了一条用于停止防火墙的命令。

touch /etc/ansible/roles/ansible_client_setup.yml
vi /etc/ansible/roles/ansible_client_setup.yml
==========
---
- hosts: ansible_client
  become: true
  tasks:
    - name: service firewalld stop
      service: name=firewalld state=stopped
==========
    [ansibleクライアント]firewallの起動を確認
service firewalld status
==========
Redirecting to /bin/systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 月 2020-08-31 19:16:38 JST; 19h ago
     Docs: man:firewalld(1)
 Main PID: 679 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─679 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid

 8月 31 19:16:37 ansible_client systemd[1]: Starting firewalld - dynamic firewall daemon...
 8月 31 19:16:38 ansible_client systemd[1]: Started firewalld - dynamic firewall daemon.
 8月 31 19:16:39 ansible_client firewalld[679]: WARNING: AllowZoneDrifting is enabled. This is considered an ...now.
Hint: Some lines were ellipsized, use -l to show in full.
==========
    [ansibleサーバ]クライアントの設定をansibleから変更
cd /etc/ansible
ansible-playbook -i hosts roles/ansible_client_setup.yml
==========
PLAY [ansible_client] ***********************************************************************************************

TASK [Gathering Facts] **********************************************************************************************
ok: [192.168.119.21]

TASK [service firewalld stop] ***********************************************************************************
changed: [192.168.119.21]

PLAY RECAP **********************************************************************************************************
192.168.119.21             : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
==========
changed=1 になったので、変更がされました!
    [ansibleクライアント]firewallの停止を確認
service firewalld status
==========
Redirecting to /bin/systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

 8月 31 19:16:37 ansible_client systemd[1]: Starting firewalld - dynamic firewall daemon...
 8月 31 19:16:38 ansible_client systemd[1]: Started firewalld - dynamic firewall daemon.
 8月 31 19:16:39 ansible_client firewalld[679]: WARNING: AllowZoneDrifting is enabled. This is considered an ...now.
 9月 01 15:07:36 ansible_client systemd[1]: Stopping firewalld - dynamic firewall daemon...
 9月 01 15:07:37 ansible_client systemd[1]: Stopped firewalld - dynamic firewall daemon.
Hint: Some lines were ellipsized, use -l to show in full.
==========

我确认了它已经停稳了!

順便提一句,如果第二次执行呢?

    [ansibleサーバ]同じ設定ファイルでクライアントの環境を変えずにansibleを再度実行
cd /etc/ansible
ansible-playbook -i hosts roles/ansible_client_setup.yml
==========
PLAY [ansible_client] ***********************************************************************************************************************************************************************************************************************

TASK [Gathering Facts] **********************************************************************************************************************************************************************************************************************
ok: [192.168.119.21]

TASK [Turn off firewalld service] ***********************************************************************************************************************************************************************************************************
ok: [192.168.119.21]

PLAY RECAP **********************************************************************************************************************************************************************************************************************************
192.168.119.21             : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0    
==========
すでにクライアント側のfirewallは停止状態にあるので、changeはされずにそのまま終わりました。

在执行过程中遇到了困难

    sudo権限
firewallの停止などミドルウェアの停止はsudo権限が必要になります。
sudo権限をつけるためには、/etc/ansible/roles/ansible_client_setup.yml
==========
become: true
==========
を、書いていないとansibleユーザでsudoなしで実行しているので、以下のようにタイムアウトとなってしまいます。
ansible-playbook -i hosts roles/ansible_client_setup.yml

PLAY [ansible_client] ***********************************************************************************************

TASK [Gathering Facts] **********************************************************************************************
ok: [192.168.119.21]

TASK [service firewalld stop] ***********************************************************************************
fatal: [192.168.119.21]: FAILED! => {"changed": false, "msg": "Unable to disable service firewalld: Failed to execute operation: 接続がタイムアウトしました\n"}

PLAY RECAP **********************************************************************************************************
192.168.119.21             : ok=1    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0   

请参考

    • sudoの設定ファイルsudoersについて

 

    • Ansible で sudo を実行する

 

    • Ansible勉強メモ(CentOS7セットアップ #1)

 

    • ansible インストール

 

    • 既存のファイルを空にするLinuxコマンド

 

    Ansibleのバージョンを指定してインストールする
广告
将在 10 秒后关闭
bannerAds