【问题标题】:How to run playbook on my application server using sudo?如何使用 sudo 在我的应用程序服务器上运行 playbook?
【发布时间】:2020-03-28 00:44:37
【问题描述】:

我正在为我的应用程序 tomcat 节点编写剧本,它将复制、部署和停止/启动 tomcat。 我有一个 hop box serverA,另一个 hop box serverB 和 tomcat 节点 tomcatC。手动使用腻子我使用以下步骤进入 tomcat

  1. 使用 userId1 登录到 serverA

  2. 使用 userId2 SSH 到 serverB

  3. 使用 userId1 SSH 到 tomcatC

  4. sudo 到 tomcat 用户。

我还可以从 serverA 直接 ssh 到 tomcatC,我的 Ansible master 也是我运行 playbook 的 serverA。

我如何为此运行我的剧本?以下是我现在使用的剧本,但它不起作用。 ansible-playbook -i my-inventory my-V3.yml --tags=download,copy,deploy -e release_version=5.7 -e target_env=tomcatC -u userId1 --ask-pass。和 my-v3.yml 如下所示 -

hosts: '{{ target_env }}' #serial: 1 remote_user: userId1 become: yes become_user: tomcat

现在得到这个错误 -

收集事实 ********************************************* ****************** 致命:[tomcatC] => 缺少成为密码

【问题讨论】:

    标签: ansible ansible-inventory


    【解决方案1】:

    您可以像这样设置用户命令运行:

    - cron:
        name: "Clear Root Mail"
        minute: "0"
        hour: "22"
        job: "sudo rm /var/spool/mail/root"
        user: myuser
    

    或者像这样使用 become: true :

    - name: Start Server
      shell: "nohup /home/myuser/StartServer.sh &"
      become: true
    

    您可以让 shell 脚本运行您需要运行的命令,以及从您拥有的跳转框调用 ansible。您的问题看起来好像您没有应用正确的 ssh 密钥。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-12
      • 1970-01-01
      • 1970-01-01
      • 2020-04-11
      • 2017-11-22
      • 1970-01-01
      相关资源
      最近更新 更多