IBM Cloud 上的 Ansible 与同一云端的 Windows 通信的备注,直到互通为止
在IBM云上下单VSI。
我在IBM Cloud上准备了以下环境,并且准备了Ansible的执行环境。
– 1台Windows Server 2016(本次为虚拟服务器01)
– 1台RHEL 7.7(本次为虚拟服务器02)
$cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.7 (Maipo)
本次将记录在RHEL上引入Ansible AWX之后,直到Windows Server的通信确认。
1. 根据环境进行RHEL环境确认(根据实际情况进行修改)。
确保/etc/hosts文件中包含Windows的目标地址。
123.456.789.123 virtualserver02.hogehoge.cloud virtualserver02
123.456.789.124 virtualserver01
2. 将以下内容添加到/etc/ansible/hosts文件中。
[windows]
virtualserver01
[windows:vars]
ansible_user=Administrator
ansible_passwordhogehoge
ansible_port=5986
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore
[rhel7]
virtualserver02
[rhel7:vars]
#ansible_ssh_user=ansible_ssh
ansible_user=ansible_ssh
#ansible_ssh_private_key_file=/home/ansible_ssh/.ssh/id_rsa.pub
#ネットの事例だと、id_rsa.pubなど共通鍵ファイルを記載しているものもあるが失敗する
ansible_ssh_private_key_file=/home/ansible_ssh/.ssh/id_rsa
#秘密鍵ファイルをきちんと記載する
3. 创建ansible_ssh用户
$useradd ansible_ssh #ユーザー作成
$groups ansible_ssh #グループに追加
$su - ansible_ssh #ansible_sshにsu
$cd ~/
$ssh-keygen -t rsa #秘密鍵の作成(よしなに作る)
4. 钥匙认证的设置
$cd ~/.ssh
$cat id_rsa.pub > authorized_keys
$chmod 600 authorized_keys
5. sudoers配置
$cp -p /etc/sudoers /etc/sudoers.bak
$visudo
## Allow root to run any commands anywhere
hoge1 ALL=(ALL) ALL
hoge2 ALL=(ALL) ALL
ansible_ssh ALL=(ALL) ALL #追記
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
%ansible_ssh ALL=(ALL) NOPASSWD: ALL #追記
6 SSHD配置
$cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.org
$vi /etc/ssh/sshd_config
[末尾に下記を追記]
Match User ansible_ssh
PubkeyAuthentication yes
PasswordAuthentication no
$systemctl restart sshd
※[ansible_ssh] $ 使用密钥认证登录 virtualserver02 的 SSH,
并确认可以使用 sudo -i 命令而无需输入密码。
完成这些工作后,已经实现了从RHEL到Windows的通信。
※没有访问密钥文件的权限的用户无法执行(可以使用ansible_ssh执行)。
Windows的设置
请事先确认已安装.NET Framework的4.0版本。
将 Windows 服务器附加到 ansible/hosts 文件中
[windows]
virtualserver01
[windows:vars]
ansible_user=Administrator
ansible_password=xxxxxxxxxxxxxxx
ansible_port=5986
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore
pip的安装
使用easy_install安装pip
使用Python2的pip命令安装pywinrm模块:
python2 -m pip安装pywinrm
这样,Windows端的设置就完成了。
确保联络畅通
ansible windows -m win_ping -i /etc/ansible/hosts
/usr/lib/python2.7/site-packages/ansible/parsing/vault/__init__.py:44: CryptographyDeprecationWarning: Python 2 is no longer supported by the Python core team. Support for it is now deprecated in cryptography, and will be removed in a future release.
from cryptography.exceptions import InvalidSignature
virtualserver01 | SUCCESS => {
"changed": false,
"ping": "pong"
}
使用以下命令检查WinRM侦听器:
winrm enumerate winrm/config/litener
请安装pywinrm