我需要在一些需要DISPLAY号码的服务器上为firefox创建一个默认配置文件。我无法弄清楚如何使用Ansible做到这一点。我一直试图让X11转发工作,但没有成功。我不允许更改SSH配置,因此我无法从那里启用X11。我怎么能用Ansible做到这一点?
我尝试过以下方法:
- 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:没有到主机的路由
- name: Create default profile
shell: |
export DISPLAY=:0.0
firefox -createprofile "default /opt/profiles/default"
未添加ssh_args = -X option
这失败了:
未指定协议,错误:无法打开显示:: 0.0
我可以ssh -X user@as1
成功运行:firefox -createprofile "default /opt/profiles/default"
必须有办法做到这一点,但我不确定还有什么可以尝试。
答案 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 参数应该可以解决问题。 你可以这样做:
ANSIBLE_SSH_ARGS='-C -o ForwardX11=yes -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no' ansible-playbook -i hosts.ini test.yml
[ssh_connection]
ssh_args = -C -o ForwardX11=yes -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no
[all]
hostname ansible_host=10.0.0.1 ansible_user=user ansible_ssh_extra_args='-o ForwardX11=yes'