当前位置: 首页 > 知识库问答 >
问题:

在没有写日志的情况下,可操作的剧本卡在任务部分

乐正光誉
2023-03-14

我正在写一本Ansible剧本,在远程服务器上安装先决条件(解压、Python、Docker、Terraform)。运行playbook时,它会通过所有阶段,直到获得“安装地形”部分。在这个阶段,我正在运行一个脚本,在服务器上安装Terraform(手动运行时该脚本工作)。然而,剧本仍停留在那个阶段,没有写日志,也没有失败。

名为“Plans.yml”的剧本是:

---
- hosts: deploy_jnlp_servers
  become: yes
  become_method: sudo
  become_user: jenkins
  tasks:
    - name: Install Unzip
      apt:
        name=unzip
        state=latest

    - name: Install Python
      apt:
        name=python-pip
        state=latest

    - name: Install Docker
      pip:
        name=docker-py

    - name: Install Terraform
      script: /home/jenkins/Ansible/scripts/config_Terraform.sh

    - name: Validate Terraform
      shell: terraform version

叫做“config_Terraform.sh”的剧本是:

#!/bin/sh

sudo apt-get update -y

# Install Unzip
sudo apt-get install unzip -y

# add addresses to /etc/hosts
echo "192.168.99.160 terraform.sample.com" | sudo tee -a /etc/hosts

TERRAFORM_VERSION="0.12.21"
WORKDIR=/tmp/terraform
mkdir -p "$WORKDIR"
cd "$WORKDIR"

# Install Terraform
curl -f "https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux$
sudo unzip terraform_${TERRAFORM_VERSION}_linux_amd64.zip -d /usr/local/bin/
sudo chmod +x  /usr/local/bin/terraform

# https://github.com/adammck/terraform-inventory
# Install terraform-inventory
wget https://github.com/adammck/terraform-inventory/releases/download/v0.8/terraform-inventory_v0.8_linux_a$
sudo unzip terraform-inventory_v0.8_linux_amd64.zip -d /usr/local/bin/
sudo chmod +x  /usr/local/bin/terraform-inventory

# https://www.cyberciti.biz/faq/how-to-set-up-ssh-keys-on-linux-unix/
#ssh-keygen -t rsa -b 4096 -f ~/.ssh/vps-cloud.web-server.key -C "My web-server key"
cd ~

我已经检查了ansible用户(在我的例子中是“jenkins”),并验证了它对远程服务器以及我想从本地ansible主服务器执行的脚本拥有所有权限。在YAML文件中,我也更改为“been:false”,但仍然会出现错误。我已经改变了我的脚本,所以现在它只有一行“sudo apt get update”。当我运行playbook时,我得到了上面的错误:

致命:[jenkinsjnlpsave.westeurope.cloudapp.azure.com]:失败=

共有1个答案

柴赞
2023-03-14

问题可能是通过Ansible运行脚本的用户(Ansible_用户)没有权限执行脚本中的sudo命令。这就是为什么当你手动运行它时,它工作得很好。

您可以尝试添加成为:yes。在这里您可以找到有关它的更多信息。

祝你好运!

编辑:成为:false或者期望模块应该被使用,因为playbook已经运行了成为:yes

 类似资料:
  • 问题内容: 我正在尝试附加在没有日志文件的SQL Server Management Studio中。 我得到下面的错误。任何想法如何做到这一点? 执行Transact-SQL语句或批处理时发生异常。 (Microsoft.SqlServer.ConnectionInfo) 无法打开物理文件“ C:\ sql_logs \ YAFnet_log.ldf”。 操作系统错误2:“ 2(系统找不到指定的

  • 我按照教程在我的express应用程序中设置winston(2.x)默认记录器。当更新到当前版本的winston(3.0.0)时,我在添加传输时遇到了问题。我已经跟踪了最新的文档,但仍然在控制台中得到通知,并且根本没有创建日志文件: 我做错了什么?

  • null 我看到过其他答案,提到了一个名为UCANAccess的Access数据库的JDBC驱动程序。如何设置Java项目以使用这种方法? (建议从Java使用Access数据库的更好方法的答案也是最受欢迎的。)

  • Tomcat每次部署花费大约20分钟,我发现它在部署阶段被卡住了,请参见下面的日志, 第一次启动会消耗大约2-7分钟,然后每次重启都会变得更糟。 环境: sudo apt-get install python-software sudo add-apt-repository ppa:webupd8team/java sudo apt-get更新

  • 我试图理解和学习它是如何工作的PSR-4,因为我喜欢用这个标准,一个小应用程序进行重构。 根据几本手册,以及关于堆栈溢出的帖子,我的结构和文件都还可以。 ResellerApi.php内容: 关于我的作曲家。json(全局) 在我的工作目录/reseller.php PHPstorm不显示错误。 但是php显示错误... 编辑:在文件vendor/composer/autoload_psr4上运行

  • 我有一个Ansible playbook,它首先在google cloud上创建一个实例,然后将新实例加载到一个组中。然后,它继续并尝试为该组运行一个角色,该角色将更新新的实例设置。我从谷歌云上的Ansible文档中获得了大部分代码。 我真正添加的是添加<code>vars_prompt)和一个用于软件座位数的变量。 在我的剧本中,我使用<code>vars_prompt<code>来收集一些用户