bash - Shell 命令手动工作,不使用 Ansible
问题描述
我正在玩 Ansible(仍在学习),但遇到了一个我想不出解决方案的问题。
我正在尝试使用 Ansible 在远程服务器上安装和启动 Tomcat。
安装工作正常,但最后一步是激活 Tomcat 服务器失败。
如果我手动启动 startup.sh 脚本(as su -
),使用以下命令 : bash /opt/tomcat/startup.sh
,我可以看到 tomcat 主页。
使用我写的ansible playbook,即使Ansible没有显示任何错误,我也看不到tomcat主页。
这是我正在运行的任务:
- name: Launch Tomcat
command: bash /opt/tomcat/startup.sh
become: true
我尝试添加become_user: root
但become_method: sudo
没有成功。
我认为这可能与become: true
ansible的处理方式有关,但我不确定。
解决方案
环境可能有问题。“sudo su”与“su -”不同,其中
-, -l, --login 提供与用户直接登录时所期望的环境相似的环境。
尝试使用shell(因为它允许管道、重定向、逻辑操作……)become: true
shell: su - && bash /opt/tomcat/startup.sh
确保remote_user
该su -
命令适用于相同的人。
推荐阅读
- aix - AIX :- 在基于 Clang 的前端中调用共享库函数时出现分段错误
- android - .FBX 中的多个 3D 对象 - 如何对每个对象应用不同的纹理
- java - 如何从字符串中提取所有整数并将其转换为 Java 中指定的 char 值?
- python - Celery:发送任务时忽略交换名称
- android - 不记名令牌请求http颤动
- graphql - graphql 对所有或少数模式字段的单选查询
- android - 从 TextInputEditText 中删除底线
- html - 如何防止浏览器在移动视口中加载图像
- jenkins - 需要有一个动态的电子邮件通知
- reactjs - 使用 React Final Form 向 RadioGroup 字段添加自定义道具