

Ansibleから、接続時に自動で対話インストールを実行するホストに  
正常に接続するにはどうしたらいいですか？

接続を試みると、デバッグモードでは正常に対話スクリプトの出力が表示されますが、  
その状態でコマンドを入力できないせいか、処理が止まってタイムアウトします。  
-bオプションのときのエラーメッセージ：

> ERROR! Timeout (12s) waiting for privilege escalation prompt

コマンド(nmtui)が自動実行されているので、これを無効にする方法でも良いとは思いますが、無効にする方法がわかりません。  
(~/.ssh/rc and /etc/ssh/sshrcは見ました)

> Aug 20 14:02:30 ip-xxx-xxx-xxx-xxx.ap-northeast-1.compute.internal
> sudo[1240]: anon : TTY=pts/1 ; PWD=/home/anon ; USER=root ; COMMAND=nmtui

Ansibleのコマンド

> ansible test -m ping --private-key test.pem -vvvv

Ansible.logの抜粋

> 2018-08-19 14:31:19,003 p=3924 u=ec2-user | 3930 1534689079.00384:
> _low_level_execute_command() done: rc=0, stdout=, stderr=open terminal
> failed: not a terminal
>
> 2018-08-19 14:31:19,004 p=3924 u=ec2-user | 3930 1534689079.00403:
> _low_level_execute_command(): starting
>
> 2018-08-19 14:31:19,004 p=3924 u=ec2-user | 3930 1534689079.00418:
> _low_level_execute_command(): executing: /bin/sh -c '/usr/bin/python
> /home/anon/.ansible/tmp/ansible-tmp-1534689078.9-277629226991869/expect.py;
> rm -rf "/home/anon/.ansible/tmp/ansible-tmp-1534689078.9-277629226991869/" >
> /dev/null 2>&1 && sleep 0'
>
> 2018-08-19 14:31:19,029 p=3924 u=ec2-user | 3930 1534689079.02952: stdout
> chunk (state=2): HERE IS TUI.
>
> 2018-08-19 14:31:54,887 p=3924 u=ec2-user | 3924 1534689114.88690: RUNNING
> CLEANUP 2018-08-19 14:31:54,888 p=3924 u=ec2-user | [ERROR]: User
> interrupted execution


CC BY-SA 4.0
2018-08-21T13:29:06.423
47703
2021-07-16T19:07:30.760
2020-06-17T08:14:45.997
-1
29809
question
linux centos ansible
Ansibleで接続時に自動で対話インストールを実行するホストに接続するには


例えば、PC1(centOS)からPC2(centOS)へsshログインによってAnsibleを実行する場合、特に複雑な設定はいらなかったと思います。

１、Ansibleフォルダ構成例

[code]

    AnsibleRootフォルダ
        private_keys
            private_key_xxx
        hosts
            dev.txt
        templates
            selinux_config
        main.yml
    
[/code]

２、hosts/dev.txt

[code]

    [dev]
    192.168.X.XXX:22
    
[/code]

３、main.yml の例

[code]

    - name: install middlewares
      hosts: dev
      tasks:
    
      - name: disable selinux
        become: yes
        shell: bash setenforce 0
        ignore_errors: true
      - name: set selinux/config
        become: yes
        template:
          src: templates/selinux_config
          dest: /etc/selinux/config
          owner: root
          group: root
          mode: 644
    
[/code]

４、templetes/selinux_config

[code]

    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #     enforcing - SELinux security policy is enforced.
    #     permissive - SELinux prints warnings instead of enforcing.
    #     disabled - No SELinux policy is loaded.
    SELINUX=disabled
    # SELINUXTYPE= can take one of three two values:
    #     targeted - Targeted processes are protected,
    #     minimum - Modification of targeted policy. Only selected processes are protected.
    #     mls - Multi Level Security protection.
    SELINUXTYPE=targeted
    
[/code]

5、実際にPC1でやる事  
（ログイン中のユーザー名はvagrantでsudo可能という前提）  
（自分で作成したansibleフォルダは/home/vagrant/vagrant_shared/ansibleに配置されたという前提）

[code]

    # sudo yum install epel-release
    # sudo yum install ansible
    # sudo yum install openssh-clients
    cd /home/vagrant/vagrant_shared/ansible
    cp private_keys/private_key ../../
    sudo chmod 0600 ../../private_key
    ansible-playbook -i hosts/dev.txt main.yml -u vagrant --private-key="../../private_key"
    
[/code]


CC BY-SA 4.0
2018-08-24T02:12:23.127
47769
2018-08-24T02:12:23.127
25396
47703
answer