ShellコマンドでリモートGCPサーバーでAnsibleを実行する

ShellコマンドでリモートGCPサーバーでAnsibleを実行する

3つのLinuxサーバーA、B、Cがあります。 Aはすべての開発者が使用している場所、BはプレイブックがあるAnsibleサーバー、Cは特定のタスクを実行するために必要なターゲットサーバーです。

これは演劇のスケルトンです - play.yml:

---
- name: get inst info
  hosts: localhost
  connection: local
  gather_facts: no

  tasks:

    - debug: msg="Before going to {{ target_instance }}"

- hosts: "{{ target_instance }}"
  become: yes
  become_user: root

  tasks:

  - debug: msg="In {{ target_instance }}"

A では、次のコマンドを実行します。

user_a@A~$ ssh B "cd <ansible_playbook_dir>; ansible-playbook play.yml -e \"target_instance=wolf\""

そして出力:

PLAY [get inst info] ********************************************************************************************************************************************************************************************************************

TASK [Involve general variables] ********************************************************************************************************************************************************************************************************
Thursday 04 November 2021  23:08:00 +0000 (0:00:00.023)       0:00:00.023 ***** 
ok: [localhost]

TASK [Involve prodcopy variables] *******************************************************************************************************************************************************************************************************
Thursday 04 November 2021  23:08:00 +0000 (0:00:00.021)       0:00:00.045 ***** 
ok: [localhost]

TASK [debug] ****************************************************************************************************************************************************************************************************************************
Thursday 04 November 2021  23:08:01 +0000 (0:00:00.019)       0:00:00.065 ***** 
ok: [localhost] => {
    "msg": "Before going to wolf"
}

PLAY [wolf] *************************************************************************************************************************************************************************************************************************

TASK [Gathering Facts] ******************************************************************************************************************************************************************************************************************
Thursday 04 November 2021  23:08:01 +0000 (0:00:00.077)       0:00:00.143 ***** 
ok: [wolf]

TASK [debug] ****************************************************************************************************************************************************************************************************************************
Thursday 04 November 2021  23:08:02 +0000 (0:00:01.877)       0:00:02.021 ***** 
ok: [wolf] => {
    "msg": "In wolf"
}

PLAY RECAP ******************************************************************************************************************************************************************************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
wolf                       : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

Thursday 04 November 2021  23:08:02 +0000 (0:00:00.031)       0:00:02.052 ***** 
=============================================================================== 

ただし、SSHキーパスワードを使用してユーザーと同じコマンドを実行すると、

user_b@A~$ ssh B "cd <ansible_playbook_dir; ansible-playbook play.yml -e \"target_instance=wolf\""

SSHエラーが発生します。

PLAY [get inst info] ***********************************************************

TASK [Involve general variables] ***********************************************
Thursday 04 November 2021  23:00:42 +0000 (0:00:00.025)       0:00:00.025 ***** 
ok: [localhost]

TASK [Involve prodcopy variables] **********************************************
Thursday 04 November 2021  23:00:42 +0000 (0:00:00.039)       0:00:00.065 ***** 
ok: [localhost]

TASK [debug] *******************************************************************
Thursday 04 November 2021  23:00:42 +0000 (0:00:00.037)       0:00:00.103 ***** 
ok: [localhost] => {
    "msg": "Before going to wolf"
}

PLAY [wolf] ****************************************************************

TASK [Gathering Facts] *********************************************************
Thursday 04 November 2021  23:00:42 +0000 (0:00:00.048)       0:00:00.151 ***** 
fatal: [wolf]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: user_b@wolf: Permission denied (publickey).", "unreachable": true}

PLAY RECAP *********************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
wolf                       : ok=0    changed=0    unreachable=1    failed=0    skipped=0    rescued=0    ignored=0   

Thursday 04 November 2021  23:00:42 +0000 (0:00:00.066)       0:00:00.218 ***** 
=============================================================================== 

user_bに対してAとBにキーチェーンを設定しました。

とにかく、SSHキーパスワードを持つユーザーがこの機能を使用できるようにすることはできますか?

ありがとうございます!

関連情報