#author("2020-10-07T09:06:04+09:00","default:jomura","jomura")
#author("2020-12-11T13:05:59+09:00","default:jomura","jomura")
すごく簡単なので、お気に入りです。
#contents
#ls2
#br
* Ansibleの導入 [#k333ad23]
** 導入するサーバの前提条件 [#t5dc2912]
+ (Ansibleが導入可能な)任意のLinuxでよい。本稿ではCentOS 8を用いる。
+ 事前導入するソフトウェアパッケージは最小構成。
+ インターネットに接続可能 ※必要ならproxy設定
/etc/yum.conf
/etc/dnf/dnf.conf
proxy=http://proxy.jomura.net:8080/ #as your own
~/.bashrc
export HTTP_PROXY=http://proxy.jomura.net:8080/ #as your own
export HTTPS_PROXY=${HTTP_PROXY}
+ パッケージの更新が事前に実行されている
yum clean all && yum -y update && reboot
dnf clean all && dnf -y update && reboot
** Ansibleのインストール [#fed309b6]
- rootで実行
yum -y install epel-release
yum -y install ansible
dnf -y install epel-release
dnf -y install ansible
ansible --version
- CentOS8だとansible 2.9.11。CentOS7だとansible 2.9.10。(2020年08月時点)
** インベントリファイルの作成 [#r2e36e99]
- 一般ユーザアカウントで実行
- "#as your own"の行は、各自、値を編集してね
cat << "_EOF_" > inventory.yml
redmine_servers:
hosts:
its.jomura.net #as your own
vars:
ansible_user: user #as your own
ansible_password: user #as your own
ansible_su_pass: root #as your own
proxy_env:
no_proxy: 127.0.0.1,localhost # do not delete
# http_proxy: http://proxy.jomura.net:8080 #as your own
# https_proxy: http://proxy.jomura.net:8080 #as your own
gitlab_servers:
hosts:
vcs.jomura.net #as your own
vars:
ansible_user: user #as your own
ansible_password: user #as your own
ansible_su_pass: root #as your own
proxy_env:
no_proxy: 127.0.0.1,localhost # do not delete
http_proxy: http://proxy.jomura.net:8080 #as your own
https_proxy: http://proxy.jomura.net:8080 #as your own
jenkins_servers:
hosts:
build.jomura.net #as your own
vars:
ansible_user: user #as your own
ansible_password: user #as your own
ansible_su_pass: root #as your own
proxy_env:
no_proxy: 127.0.0.1,localhost # do not delete
# http_proxy: http://proxy.jomura.net:8080 #as your own
# https_proxy: http://proxy.jomura.net:8080 #as your own
_EOF_
** ssh公開鍵のfinger printの記録 [#w4bbdcc8]
- playbookを実行する前に、各ホストにssh接続し、finger printをknown_hostsファイルに記録しておく
- 一般ユーザアカウントで実行
[user@localhost ~]$ ssh user@vcs.jomura.net
The authenticity of host 'vcs.jomura.net (10.130.146.45)' can't be established.
ECDSA key fingerprint is SHA256:yXhFg2AqmDebKZ3fHOwMbVyIijZIlNFQ5B750jcCo+g.
ECDSA key fingerprint is MD5:0a:93:88:6e:7f:1f:dd:8c:44:92:af:ab:d5:a5:e6:64.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'vcs.jomura.net' (ECDSA) to the list of known hosts.
** [option] 秘匿情報の暗号化 [#t0d40a05]
- インベントリファイル等に、パスワード等の秘匿情報を平文で書いておきたくない場合は、ansible-vaultで暗号化する
- 一般ユーザアカウントで実行
+ [鍵ファイルの作成]
echo 'PASSWORD' > ~/.ansible-vault-key
chmod 400 ~/.ansible-vault-key
-- 'PASSWORD'は任意の鍵文字列
-- .ansible-vault-keyファイルを秘匿する必要がある
+ [暗号化文字列の生成]
#例
echo -n 'user' | ansible-vault encrypt_string --vault-id ~/.ansible-vault-key --stdin-name 'ansible_password'
-- --stdin-name(暗号化する項目の名称)の指定は任意だが、書いた方がわかりやすい
#例
ansible_password: !vault |
$ANSIBLE_VAULT;1.1;AES256
64613333626230353935646131663335343964303838643835633662666662306361313464646635
3235666362373830626465333036333738356566643133380a396465653735666361336238393138
62313832333839316236326265653934333637393063643066333733333735653636373361303638
3363303664353965660a396439643234363764396461326461383038323864313330336666616436
6663
-- 出力された文字列で、inventory.ymlファイルの該当項目を置換する。
+ [--vault-idオプションの付与]
-- 暗号化文字列に置換した場合は、以降のansible-playbook実行時に、鍵ファイルを指定する必要がある。(本稿では記述を省略している)
#例
ansible-playbook -i inventory.yml pb_jenkins_server.yml --vault-id ~/.ansible-vault-key