使用SSH X11转发Ansible

时间:2018-05-23 19:14:34

标签: firefox ssh ansible

我需要在一些需要DISPLAY号码的服务器上为firefox创建一个默认配置文件。我无法弄清楚如何使用Ansible做到这一点。我一直试图让X11转发工作,但没有成功。我不允许更改SSH配置,因此我无法从那里启用X11。我怎么能用Ansible做到这一点?

我尝试过以下方法:

  1. - name: Create default profile  
      shell: firefox -createprofile "default /opt/profiles/default"
    

    并将ssh_args中的ansible.cfg设置为:ssh_args= -X

    这失败了:

      

    无法通过ssh连接到主机:ssh:connect to host as1 port 22:没有到主机的路由

  2. - name: Create default profile  
      shell: |  
        export DISPLAY=:0.0  
        firefox -createprofile "default /opt/profiles/default"
    

    未添加ssh_args = -X option

    这失败了:

      

    未指定协议,错误:无法打开显示:: 0.0

  3. 我可以ssh -X user@as1成功运行:firefox -createprofile "default /opt/profiles/default"

    必须有办法做到这一点,但我不确定还有什么可以尝试。

2 个答案:

答案 0 :(得分:0)

您可以在无头模式下运行firedox(因此不需要以这种方式进行X11转发)

firefox -headless -CreateProfile "default /opt/profiles/default"

所以你可以在ansible中实现这种方式

- name: Create default profile  
  command: firefox -headless -createprofile "default /opt/profiles/default"

(当不需要shell功能时,我更喜欢在shell上使用命令模块)

答案 1 :(得分:0)

一般来说,不仅仅是针对特定的 firefox 情况,将“-o ForwardX11=yes”选项添加到 ssh 参数应该可以解决问题。 你可以这样做:

  1. 从命令行设置 ANSIBLE_SSH_ARGS,如下所示:
ANSIBLE_SSH_ARGS='-C -o ForwardX11=yes -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no' ansible-playbook -i hosts.ini test.yml
  1. 更新 ansible.cfg 文件:
[ssh_connection]
    ssh_args =  -C -o ForwardX11=yes -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no
  1. 我的首选方式,在 hosts.ini 文件中设置 ansible_ssh_extra_args,例如:
    [all]
    hostname ansible_host=10.0.0.1 ansible_user=user ansible_ssh_extra_args='-o ForwardX11=yes'