Ansible的安装
关于Ansible安装
由於研究的需要,我决定使用Ansible,并且在安装过程中遇到了一些困难,所以现在我将说明如何处理。
在Ansible中,我将执行管理终端的关机操作。
实验环境
-
- UbuntuServer 16.04 LTS
-
- SSH
-
- ## インストール
-
- サーバ側
- AnsibleとPython2.7をインストールする。
$ sudo apt-get install ansible
$ sudo apt-get install python2.7
在客户端上安装Python Simplejson。
$ sudo apt-get install python-simplejson
这样就算是安装了所有必要的东西。
客户的设置
要在服务器和客户端之间建立连接,需要使用公钥认证。但是,为了避免费用,可以使用自签名证书而不必从认证机构那里获取证书。然而,认证是使用私钥而不是公钥进行的。此次操作不需要设置密码。一定要记得将私钥复制到服务器上。
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/karuma/.ssh/id_rsa): ← Enterキーを押します
Created directory '/home/karuma/.ssh'. ← ~/.ssh がない場合、ディレクトリを作成します
Enter passphrase (empty for no passphrase): ← パスフレーズを入力します(今回は入力しない)
Enter same passphrase again: ← もう一度パスフレーズを入力します(今回は入力しない)
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/id_rsa*
$ chmod 700 ~/.ssh/
$ chmod 600 ~/.ssh/authorized_keys
服务器设定
-
- ./ssh/config
-
- /etc/ansible/hosts (任意の階層でよい)
- /etc/ansible/test.yml (任意の階層でよい)
需要注意的是上述的三点。此外,示例应根据自己的环境适时更改。
Host IPアドレス
HostName IPアドレス
User test
Port 22
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile "秘密鍵の絶対座標"
IdentitiesOnly yes
LogLevel FATAL
[all]
(IPAddress) ansbile_ssh_user=(UserName) ansible_ssh_private_key_file=(秘密鍵の絶対座標)
[all:vars]
ansible_sudo_pass=(sudoパスワード)
出于Qiita的设计要求,在hosts后面加上”.”才能指定文件名。将(IPAddress) = 127.0.0.1替换为上述形式。
只需要一种选项:通过将[test:vars]设置为[test]中所述的所有终端设备指定相同的配置。在这个例子中,指定了sudo密码。
---
- hosts:all
always_run:yes
tasks:
- name: shutdown
Command: shutdown -h now
确认行动
确认可以与由Ansible管理的终端进行连通的功能。
$ ansible all -m ping
如果出现这样的表现,就算是成功了。
接下来试着进行关机。
$ ansible-playbook /etc/ansible/shutdown.yml --check -s
当进行本次动作检查时,添加了”–check”,但实际使用时不必要。
此外,這個圖片中存在一個錯誤,我們打算進一步查明原因。
然而,我們已經確認管理端末可以正常關機。
這個錯誤的原因是在Ansible連接SSH時,管理端末被關機而導致連接斷開。
因此,我們可以通過修改以下內容正常結束Ansible。
將指令從”現在”更改為”1″,這樣1分鐘後執行關機。
---
- hosts:all
always_run:yes
tasks:
- name: shutdown
Command: shutdown -h 1