・resolv.confで複数DNSサーバを指定した場合、もし最初のDNSサーバが落ちてたら2番目のDNSサーバにクエリを出すが、もし最初のDNSサーバが落ちてなくてかつ、検証用に立てたDNSサーバでfowardersとか再帰クエリとかちゃんと設定してなくて、インターネット上に実在するドメインやFQDNなどのリソースが引けなくなってた場合、リゾルバはエラーを返すのか?

それともresolv.confの2番目のDNSサーバにクエリを出してくれるのか?

  tag:DNS

 

 

・ミドルウェアやアプリを実際に認証、認可してみる

・レプリケーション設定(active-active)

・各コンポーネント(ケルベロス、sssd、ldapなど)をFreeIPAから切り離してそれぞれ単独で使った場合との違いについて考察する

・Linuxのローカルな名前解決(nss,dns)、認証(pam)、認可との違い

・ADとの比較

・ADとの協調設定

・他のSSOプロトコル(OAuth、SAML)との比較

・FreeIPAの展望

■ドキュメント

公式サイト

get start

documents

日本語ドキュメント(2.9_ja)

 

■参考

Ansible超入門

 

※Ansibleをインストールしてplaybookを作って実際にapacheをインストールするまでの手順を紹介している

 

■動作原理とインストール構成

・ansibleはコントロールノードと呼ばれる1台のサーバにインストールする

・ansibleはエージェントレスでコントロールノードで実行したansibleからssh鍵認証でコントロールする対象ノード(ターゲットノード)にアクセスしてリモートコマンドを実行する

・ansibleはデーモンではなく使うときだけ実行して使い終わったら落とすソフトウェア

Ansible入門者向け学習ガイド(CentOS編)参照

 

■インストール要件

※上記④の中の

インストール(2.9_ja)

要件(2.9_ja)

python2かpython3が必要で、/usr/bin/pythonで実行しようとする

※/usr/bin/pythonはcentos7のデフォルトでは/usr/bin/python2のシンボリックリンクになってる。

■インストール

※pipやgithubからのtarボールでもインストールできる。

・インストール前にちゃらいことする

[centos7copy]$ iptables -F
[centos7copy]$ setenforce 0

centos7の場合はansibleパッケージはepelリポジトリから取ってくる

ここからも取ってこれる。

epelリポジトリがyumリポジトリに登録未済なら下記で登録する。

yum install epel-release

すでにepelリポジトリが登録済みなら、

[centos7copy]$ cd /etc/yum.repos.d/
[centos7copy]$ cp -p epel.repo epel.repo.org
[centos7copy]$ vi epel.repo

---(編集)---

[centos7copy]$ diff epel.repo.org epel.repo
6c6
< enabled=0
---
> enabled=1

centos7copy]$ yum install ansible -y
Loaded plugins: fastestmirror, langpacks, product-id, search-disabled-repos, subscription-manager

This system is not registered with an entitlement server. You can use subscription-manager to register.

Loading mirror speeds from cached hostfile
epel/x86_64/metalink                                                              | 6.8 kB  00:00:00
 * base: ftp-srv2.kddilabs.jp
 * epel: download.nus.edu.sg
 * extras: ftp-srv2.kddilabs.jp
 * updates: ftp-srv2.kddilabs.jp
epel                                                                              | 4.7 kB  00:00:00
(1/2): epel/x86_64/updateinfo                                                     | 1.0 MB  00:00:08
(2/2): epel/x86_64/primary_db                                                     | 6.9 MB  00:00:36
Resolving Dependencies
--> Running transaction check
---> Package ansible.noarch 0:2.9.14-1.el7 will be installed
--> Processing Dependency: python-httplib2 for package: ansible-2.9.14-1.el7.noarch
--> Processing Dependency: python-jinja2 for package: ansible-2.9.14-1.el7.noarch
--> Processing Dependency: python-paramiko for package: ansible-2.9.14-1.el7.noarch
--> Processing Dependency: python2-jmespath for package: ansible-2.9.14-1.el7.noarch
--> Processing Dependency: sshpass for package: ansible-2.9.14-1.el7.noarch
--> Running transaction check
---> Package python-jinja2.noarch 0:2.7.2-4.el7 will be installed
--> Processing Dependency: python-babel >= 0.8 for package: python-jinja2-2.7.2-4.el7.noarch
--> Processing Dependency: python-markupsafe for package: python-jinja2-2.7.2-4.el7.noarch
---> Package python-paramiko.noarch 0:2.1.1-9.el7 will be installed
---> Package python2-httplib2.noarch 0:0.18.1-3.el7 will be installed
---> Package python2-jmespath.noarch 0:0.9.4-2.el7 will be installed
---> Package sshpass.x86_64 0:1.06-2.el7 will be installed
--> Running transaction check
---> Package python-babel.noarch 0:0.9.6-8.el7 will be installed
---> Package python-markupsafe.x86_64 0:0.11-10.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=========================================================================================================
 Package                       Arch             Version           Repository               Size
=========================================================================================================
Installing:
 ansible                       noarch           2.9.14-1.el7      epel                      17 M
Installing for dependencies:
 python-babel                  noarch           0.9.6-8.el7       base                      1.4 M
 python-jinja2                 noarch           2.7.2-4.el7       base                      519 k
 python-markupsafe             x86_64           0.11-10.el7       base                      25 k
 python-paramiko               noarch           2.1.1-9.el7       base                      269 k
 python2-httplib2              noarch           0.18.1-3.el7      epel                      125 k
 python2-jmespath              noarch           0.9.4-2.el7       epel                      41 k
 sshpass                       x86_64           1.06-2.el7        extras                    21 k

Transaction Summary
=========================================================================================================
Install  1 Package (+7 Dependent packages)

Total download size: 20 M
Installed size: 115 M
Downloading packages:
(1/8): python-markupsafe-0.11-10.el7.x86_64.rpm                |  25 kB  00:00:02
(2/8): python-jinja2-2.7.2-4.el7.noarch.rpm                    | 519 kB  00:00:02
(3/8): python-babel-0.9.6-8.el7.noarch.rpm                     | 1.4 MB  00:00:02
(4/8): python-paramiko-2.1.1-9.el7.noarch.rpm                  | 269 kB  00:00:03
(5/8): ansible-2.9.14-1.el7.noarch.rpm                         |  17 MB  00:01:23
(6/8): sshpass-1.06-2.el7.x86_64.rpm                           |  21 kB  00:00:00
(7/8): python2-httplib2-0.18.1-3.el7.noarch.rpm                | 125 kB  00:00:00
(8/8): python2-jmespath-0.9.4-2.el7.noarch.rpm                 |  41 kB  00:00:01
---------------------------------------------------------------------------------------------------------
Total                                                      237 kB/s |  20 MB  00:01:25
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : sshpass-1.06-2.el7.x86_64                                      1/8
  Installing : python2-httplib2-0.18.1-3.el7.noarch                           2/8
  Installing : python-babel-0.9.6-8.el7.noarch                                3/8
  Installing : python2-jmespath-0.9.4-2.el7.noarch                            4/8
  Installing : python-paramiko-2.1.1-9.el7.noarch                             5/8
  Installing : python-markupsafe-0.11-10.el7.x86_64                           6/8
  Installing : python-jinja2-2.7.2-4.el7.noarch                               7/8
  Installing : ansible-2.9.14-1.el7.noarch                                    8/8
  Verifying  : python-markupsafe-0.11-10.el7.x86_64                           1/8
  Verifying  : python-paramiko-2.1.1-9.el7.noarch                             2/8
  Verifying  : python2-jmespath-0.9.4-2.el7.noarch                            3/8
  Verifying  : python-babel-0.9.6-8.el7.noarch                                4/8
  Verifying  : python2-httplib2-0.18.1-3.el7.noarch                           5/8
  Verifying  : ansible-2.9.14-1.el7.noarch                                    6/8
  Verifying  : sshpass-1.06-2.el7.x86_64                                      7/8
  Verifying  : python-jinja2-2.7.2-4.el7.noarch                               8/8

Installed:
ansible.noarch 0:2.9.14-1.el7

Dependency Installed:
python-babel.noarch 0:0.9.6-8.el7              python-jinja2.noarch 0:2.7.2-4.el7 

python-markupsafe.x86_64 0:0.11-10.el7         python-paramiko.noarch 0:2.1.1-9.el7
python2-httplib2.noarch 0:0.18.1-3.el7         python2-jmespath.noarch 0:0.9.4-2.el7         sshpass.x86_64 0:1.06-2.el7

Complete!

リポジトリ設定をdisableに戻す

[centos7copy]$ mv epel.repo.org epel.repo
mv: overwrite ‘epel.repo’? y

落ちてきたのはpython2のライブラリなので念のため確認

[centos7copy]$ ll /usr/bin/python
lrwxrwxrwx. 1 root root 16 Nov  9 01:51 /usr/bin/python -> /usr/bin/python2

 

・インストールされたファイルを確認

[centos7copy]$ rpm -ql ansible | wc -l
17308

すげえ多い。

[centos7copy]$ rpm -ql ansible | grep "/usr/lib/python2.7/site-packages" | wc -l
17243

[centos7copy]$ rpm -ql ansible | grep "/usr/lib/python2.7/site-packages" | head
/usr/lib/python2.7/site-packages/ansible
/usr/lib/python2.7/site-packages/ansible-2.9.14-py2.7.egg-info
/usr/lib/python2.7/site-packages/ansible-2.9.14-py2.7.egg-info/PKG-INFO
/usr/lib/python2.7/site-packages/ansible-2.9.14-py2.7.egg-info/SOURCES.txt
/usr/lib/python2.7/site-packages/ansible-2.9.14-py2.7.egg-info/dependency_links.txt
/usr/lib/python2.7/site-packages/ansible-2.9.14-py2.7.egg-info/not-zip-safe
/usr/lib/python2.7/site-packages/ansible-2.9.14-py2.7.egg-info/requires.txt
/usr/lib/python2.7/site-packages/ansible-2.9.14-py2.7.egg-info/top_level.txt
/usr/lib/python2.7/site-packages/ansible/__init__.py
/usr/lib/python2.7/site-packages/ansible/__init__.pyc

[centos7copy]$ rpm -ql ansible | grep "/usr/lib/python2.7/site-packages" | tail
/usr/lib/python2.7/site-packages/ansible_test/config/cloud-config-gcp.ini.template
/usr/lib/python2.7/site-packages/ansible_test/config/cloud-config-hcloud.ini.template
/usr/lib/python2.7/site-packages/ansible_test/config/cloud-config-opennebula.ini.template
/usr/lib/python2.7/site-packages/ansible_test/config/cloud-config-openshift.kubeconfig.template
/usr/lib/python2.7/site-packages/ansible_test/config/cloud-config-scaleway.ini.template
/usr/lib/python2.7/site-packages/ansible_test/config/cloud-config-tower.ini.template
/usr/lib/python2.7/site-packages/ansible_test/config/cloud-config-vcenter.ini.template
/usr/lib/python2.7/site-packages/ansible_test/config/cloud-config-vultr.ini.template
/usr/lib/python2.7/site-packages/ansible_test/config/inventory.networking.template
/usr/lib/python2.7/site-packages/ansible_test/config/inventory.winrm.template

[centos7copy]$ rpm -ql ansible | grep -v "/usr/lib/python2.7/site-packages" | grep -v "/usr/share"
/etc/ansible
/etc/ansible/ansible.cfg
/etc/ansible/hosts
/etc/ansible/roles

/usr/bin/ansible
/usr/bin/ansible-2
/usr/bin/ansible-2.7
/usr/bin/ansible-config
/usr/bin/ansible-connection
/usr/bin/ansible-console
/usr/bin/ansible-console-2
/usr/bin/ansible-console-2.7
/usr/bin/ansible-doc
/usr/bin/ansible-doc-2
/usr/bin/ansible-doc-2.7
/usr/bin/ansible-galaxy
/usr/bin/ansible-galaxy-2
/usr/bin/ansible-galaxy-2.7
/usr/bin/ansible-inventory
/usr/bin/ansible-playbook
/usr/bin/ansible-playbook-2
/usr/bin/ansible-playbook-2.7
/usr/bin/ansible-pull
/usr/bin/ansible-pull-2
/usr/bin/ansible-pull-2.7
/usr/bin/ansible-test
/usr/bin/ansible-vault
/usr/bin/ansible-vault-2
/usr/bin/ansible-vault-2.7

 

・Ansible コマンドシェルのインストール

[centos7copy]$ vi /etc/yum.repos.d/epel.repo

----(編集)----

[centos7copy]$ cat /etc/yum.repos.d/epel.repo

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1

----(略)----

[centos7copy]$ yum install -y python-argcomplete
----(略)----
Installed:
  python2-argcomplete.noarch 0:1.7.0-4.el7

Complete!

[centos7copy]$ rpm -ql python2-argcomplete
/etc/bash_completion.d/python-argcomplete.sh
/usr/bin/activate-global-python-argcomplete
/usr/bin/python-argcomplete-check-easy-install-script
/usr/bin/python-argcomplete-tcsh
/usr/bin/register-python-argcomplete
/usr/lib/python2.7/site-packages/argcomplete
/usr/lib/python2.7/site-packages/argcomplete-1.7.0-py2.7.egg-info
/usr/lib/python2.7/site-packages/argcomplete-1.7.0-py2.7.egg-info/PKG-INFO
/usr/lib/python2.7/site-packages/argcomplete-1.7.0-py2.7.egg-info/SOURCES.txt
/usr/lib/python2.7/site-packages/argcomplete-1.7.0-py2.7.egg-info/dependency_links.txt
/usr/lib/python2.7/site-packages/argcomplete-1.7.0-py2.7.egg-info/not-zip-safe
/usr/lib/python2.7/site-packages/argcomplete-1.7.0-py2.7.egg-info/top_level.txt
/usr/lib/python2.7/site-packages/argcomplete/__init__.py
/usr/lib/python2.7/site-packages/argcomplete/__init__.pyc
/usr/lib/python2.7/site-packages/argcomplete/__init__.pyo
/usr/lib/python2.7/site-packages/argcomplete/bash_completion.d
/usr/lib/python2.7/site-packages/argcomplete/bash_completion.d/python-argcomplete.sh
/usr/lib/python2.7/site-packages/argcomplete/compat.py
/usr/lib/python2.7/site-packages/argcomplete/compat.pyc
/usr/lib/python2.7/site-packages/argcomplete/compat.pyo
/usr/lib/python2.7/site-packages/argcomplete/completers.py
/usr/lib/python2.7/site-packages/argcomplete/completers.pyc
/usr/lib/python2.7/site-packages/argcomplete/completers.pyo
/usr/lib/python2.7/site-packages/argcomplete/my_argparse.py
/usr/lib/python2.7/site-packages/argcomplete/my_argparse.pyc
/usr/lib/python2.7/site-packages/argcomplete/my_argparse.pyo
/usr/lib/python2.7/site-packages/argcomplete/my_shlex.py
/usr/lib/python2.7/site-packages/argcomplete/my_shlex.pyc
/usr/lib/python2.7/site-packages/argcomplete/my_shlex.pyo
/usr/share/doc/python2-argcomplete-1.7.0
/usr/share/doc/python2-argcomplete-1.7.0/README.rst
/usr/share/licenses/python2-argcomplete-1.7.0
/usr/share/licenses/python2-argcomplete-1.7.0/LICENSE.rst

 

■ansibleの設定

ansibleの設定

ansibleの設定ファイル

上記のrpmパッケージを利用してインストールした場合は、

/etc/ansible/ansible.cfg

・環境変数

Ansible では、環境変数を使用した設定も可能です。 これらの環境変数が設定されている場合、設定ファイルから読み込まれる設定よりもこちらのほうが優先されます。

Ansible Configuration Settings 」から利用可能な環境変数の詳細な一覧を取得できます

・コマンドラインオプション

コマンドラインにすべての設定オプションが存在するわけではありません。最も便利で一般的と思われるものだけが存在します。 コマンドラインでの設定は、設定ファイルおよび環境を介して渡される設定よりも優先されます。利用可能なオプションの詳細な一覧は

 ansible-playbook および ansible で入手できます。

 

[centos7copy]$ wc -l /etc/ansible/ansible.cfg
490 /etc/ansible/ansible.cfg

・ログに関係ありそうな設定

[centos7copy]$ cat /etc/ansible/ansible.cfg

----(略)----

    109 # logging is off by default unless this path is defined
    110 # if so defined, consider logrotate
    111 #log_path = /var/log/ansible.log

----(略)----

    156 # by default, if a task in a playbook does not include a name: field then
    157 # ansible-playbook will construct a header that includes the task's action but
    158 # not the task's args.  This is a security feature because ansible cannot know
    159 # if the *module* considers an argument to be no_log at the time that the
    160 # header is printed.  If your environment doesn't have a problem securing
    161 # stdout from ansible-playbook (or you have manually specified no_log in your
    162 # playbook on all of the tasks where you have secret information) then you can
    163 # safely set this to True to get more informative messages.
    164 #display_args_to_stdout = False

----(略)----

    210 # by default callbacks are not loaded for /bin/ansible, enable this if you
    211 # want, for example, a notification or logging callback to also apply to
    212 # /bin/ansible runs
    213 #bin_ansible_callbacks = False

----(略)----

    268 # prevents logging of task data, off by default
    269 #no_log = False
    270
    271 # prevents logging of tasks, but only on the targets, data is still logged on the master/controller
    272 #no_target_syslog = False

----(略)----

 

■使い方

クイックスタートガイド

 

本でも読めや

はじめてのAnsible