如何通过ansible剧本在VM上启动和访问byobu会话?

时间:2019-05-27 10:25:22

标签: ansible byobu

我正在尝试使用byobu命令通过ansible剧本在VM上启动一个命名的byobu会话。会话确实开始了,但是在后台,即,当我运行_ps -aux_命令但当我尝试通过_byobu attach-session -t testByobu_从VM连接到该会话(testByobu)时,正在显示会话及其所有窗口/任务,它说找不到会话testByobu ,类似地,命令_byobu list-session_

  

没有服务器在/ tmp / tmux-100 / default *上运行。

     

VM   -具有Ubuntu 18.04.2 LTS的VirtualBox VM   --- Byobu版本5.125 tmux 2.6

     

本地系统   --- Ubuntu 18.04.2 LTS   ---可以2.8.0        配置文件= /etc/ansible/ansible.cfg        配置的模块搜索路径= [u'/ home / emumba / .ansible / plugins / modules',u'/ usr / share / ansible / plugins / modules']        ansible python模块位置= /usr/lib/python2.7/dist-packages/ansible        可执行位置= / usr / bin / ansible        python版本= 2.7.15rc1(默认,2018年11月12日,14:31:15)[GCC 7.3.0]

当我尝试使用可播放的剧本再次创建同名会话,即 testByoby 时,出现错误

  

任务[开始byobu会话]   ****************************************************** ****************************************************** ***********************致命:[192.168.2.218]:失败! => {“更改”:true,“ cmd”:“ byobu   new-session -d -s testByobu“,” delta“:” 0:00:00.046348“,” end“:   “ 2019-05-27 12:26:15.832584”,“ msg”:“非零返回码”,“ rc”:1,   “开始”:“ 2019-05-27 12:26:15.786236”,“ stderr”:“重复的会话:   testByobu”,“ stderr_lines”:[“重复的会话:testByobu”],   “ stdout”:“”,“ stdout_lines”:[]}

发生,因为它发现会话已经存在。但是,当我直接在VM上进行相同的会话(testByoby)时,它创建成功。 VM上的ps -aux命令显示两个以相同名称运行的会话,并且我通过playbook创建的会话创建的窗口也显示在输出中。但是运行 byobu list-session 命令仅显示我直接在VM上创建的一个会话。

**output of the _ps -aux_ command:**

USER    PID %CPU %MEM   VSZ   RSS TTY   STAT START   TIME COMMAND
osama   3374  0.0  0.1  37284  3740 ?       Ss   12:27   0:00 tmux -u -2 -f /usr/share/byobu/profiles/tmuxrc new-session -d -s testByobu
osama   3378  0.0  0.2  29896  5080 pts/6   Ss+  12:27   0:00 /bin/bash
root    4087  0.0  0.0      0   0 ?     I   12:31   0:00 [kworker/u2:1-ev]
root    4123  0.0  0.0      0   0 ?     I   12:36   0:00 [kworker/0:2]
root    4126  0.0  0.3 110076  7280 ?       Ss   12:36   0:00 sshd: osama [priv]
osama   4190  0.2  0.2 110556  5288 ?       S   12:36   0:00 sshd: osama@notty
root    4275  0.0  0.1  37276  3652 ?       Ss   12:36   0:00 tmux -u -2 -f /usr/share/byobu/profiles/tmuxrc new-session -d -s testByobu
root    4278  0.0  0.1  28908  4040 pts/3   Ss+  12:36   0:00 /bin/bash
root    4403  0.0  0.1  28908  3852 pts/2   Ss   12:36   0:00 /bin/bash
root    4441  0.0  0.2  39760  4196 pts/2   S+   12:36   0:00 vi
root    4492  0.0  0.1  28908  3948 pts/4   Ss+  12:36   0:00 /bin/bash
root    4581  0.0  0.1  28908  3892 pts/5   Ss   12:36   0:00 /bin/bash
root    4619  0.0  0.0  23828  1076 pts/5   S+   12:36   0:00 ping 8.8.8.8
osama   4641  0.0  0.1  47100  3716 pts/0   R+   12:37   0:00 ps -aux

尝试了其他方式 如果我先在VM上进行会话,然后再运行剧本制作该会话的窗口,则它再次遇到错误

  

任务[任务1]   ****************************************************** ****************************************************** ****************************************致命:[192.168.2.218]:失败! => {“更改”:true,“ cmd”:“ byobu   send-keys -t testByobu:0'vim''C-m'“,” delta“:” 0:00:00.057772“,   “ end”:“ 2019-05-27 12:30:08.899375”,“ msg”:“非零返回码”,   “ rc”:1,“开始”:“ 2019-05-27 12:30:08.841603”,“ stderr”:“没有服务器   在/ tmp / tmux-0 / default上运行”,“ stderr_lines”:[“没有服务器在运行   在/ tmp / tmux-0 / default上“],” stdout“:”“,” stdout_lines“:[]}

再次显示该剧本没有访问已经存在的书。

这是示例剧本。


  name: Test Byobu
  hosts: all
  remote_user: osama
  become: yes

任务:

#  name: kill byobu session
#  shell: byobu kill-session -t testByobu

    name: start byobu session
    shell: byobu new-session -d -s testByobu


  name: task 1
  shell: |
  byobu send-keys -t testByobu:0 'vim' 'C-m'

  name: task 2
  shell: |
  byobu new-window -t testByobu:1
  byobu send-keys -t testByobu:1 'vi' 'C-m'

  name: task 3
  shell: |
  byobu new-window -t testByobu:2
  byobu send-keys -t testByobu:2 'cd /tmp/ && touch testByobu.txt' 'C-m'

  name: task 4
  shell: |
  byobu new-window -t testByobu:3
  byobu send-keys -t testByobu:3 'ping 8.8.8.8' 'C-m'`

我期望的是,当我运行我的剧本(提供代码)时,它应该在VM上创建一个名为testByobu的新会话,以便当我运行_byobu attach-session -t testByobu_命令且所有窗口都完好无损时可以访问它在剧本中创建。我可以切换到在playook中创建的所有4个窗口。

实际上发生的是剧本成功运行,但是在VM上,会话在后台运行,而VM上的byobu似乎不知道该会话。

在这方面的帮助,我将不胜感激。

更新 我想我应该对问题进行总结,这样可能会使详细说明容易理解。

我想在VM上启动一个名为testByobu的byobu会话,并通过可播放的剧本在该会话的不同窗口上运行不同的进程。 剧本(提供的代码)运行成功,但是当我尝试使用byobu list-session命令列出byobu会话时,在VM上却没有testByobu。因此,当我运行byobu attach-session -t testByobu命令时,我也无法连接到该会话。 需要提及的重要一点是,会话“ testByoby”以及通过剧本在该会话内运行的所有进程的确会显示在命令ps -aux产生的正在运行的进程的列表中。 我想要的是,当我在VM上运行byobu list-session命令时,会话必须出现,因此,当我运行byobu attach-session -t testByobu命令时,进入该会话必须是可以实现的。

0 个答案:

没有答案