Terrafrom local-exec ansible error /bin/sh: 1: ansible-playb



我正在尝试通过local-exec测试Terraform调用Ansible剧本

我遇到了以下错误

null_resource.pb_add_main: Provisioning with 'local-exec'...
null_resource.pb_add_main (local-exec): Executing: ["/bin/sh" "-c" "    ansible-playbook hw.ymln"]
null_resource.pb_add_main (local-exec): /bin/sh: 1: ansible-playbook: not found
╷
│ Error: Error running command '    ansible-playbook hw.yml
│ ': exit status 127. Output: /bin/sh: 1: ansible-playbook: not found

不知道如何纠正这个.........任何帮助都非常感谢!

我看到参考ansible已经安装-它是,executable location = /usr/bin/ansible

并在local-exec命令中执行echo $PATH,并确认在给定路径

中是否存在ansible
null_resource.echo (local-exec): Executing: ["/bin/sh" "-c" "echo $PATH"]
null_resource.pb_add_main: Creating...
null_resource.echo (local-exec): /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
<标题>

附加信息CentOS新版本

sudo dnf install -y dnf-plugins-core
sudo dnf config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
sudo yum install terraform
sudo yum install epel-release
sudo yum install ansible

[user@centos-automate config_deploy_del]$ ansible --version
ansible 2.9.23
config file = /home/user/config_deploy_del/ansible.cfg
configured module search path = ['/home/user/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3.6/site-packages/ansible
executable location = /usr/bin/ansible
python version = 3.6.8 (default, Jul 15 2021, 15:17:46) [GCC 8.5.0 20210514 (Red Hat 8.5.0-2)]

Terraform正在从执行

[user@centos-automate config_deploy_del]$ pwd
/home/user/config_deploy_del

tf和pb文件都在同一个目录

[user@centos-automate config_deploy_del]$ ls -la
total 72
-rw-rw-r--. 1 user user    0 Aug  5 18:13 ansible.cfg
-rw-rw-r--. 1 user user  145 Aug  5 18:13 backend.tf
-rw-rw-r--. 1 user user  228 Aug  5 18:13 hw.yml
-rw-rw-r--. 1 user user  855 Aug  5 18:13 pb.tf
-rw-rw-r--. 1 user user  140 Aug  5 18:13 providers.tf
-rw-rw-r--. 1 user user  321 Aug  5 18:13 variables.tf

特遣部队文件pb.tf

resource "null_resource" "echo" {
provisioner "local-exec" {
command = "echo $PATH"
}
}
resource "null_resource" "pb_add_main" {
provisioner "local-exec" {
command = <<EOT
ansible-playbook hw.yml
EOT
}
}

tf文件更改pb.tf导致相同的错误

........
resource "null_resource" "pb_add_main" {
provisioner "local-exec" {
command = "ansible-playbook hw.yml"
}
}
<<p>路径组合/strong>To visible and playbook - none work

/usr/bin/ansible-playbook hw.ymland

/usr/bin/ansible-playbook /home/user/config_deploy_del/hw.ymland

ansible-playbook /home/user/config_deploy_del/hw.yml

开始看这一行

有意思——我已经开始看这一行了

(local-exec): Executing: ["/bin/sh" "-c" "ansible-playbook hw.yml"]

,如果您从CMDL运行它.........仅仅是它自己-播放执行

[user@centos-automate config_deploy_del]$ /bin/sh -c "ansible-playbook hw.yml"

潜在的修复-工作,然后不

我得到一个提示,ansible需要通过pip安装,而不是通过yumapt-get

在一个备用的ubuntu虚拟机上,我做了以下操作——允许local-exec执行playbook

然而这只工作了几次,当我更新我的工作.tf.yml文件来运行我的工作流时,它又失败了。

我恢复我的文件,它继续失败.......

curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update && sudo apt-get install terraform
terraform -help
touch ~/.bashrc
sudo apt install python3-pip
sudo pip3 install ansible

我在CentOS上遵循这个过程,它没有工作

sudo dnf install -y dnf-plugins-core
sudo dnf config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
sudo yum update
sudo yum install terraform
sudo yum install python3
sudo yum install python3-pip
sudo pip3 install --upgrade pip
sudo pip3 install ansible

这有点晚了,但可能您需要将working_dir参数添加到provision local-exec语句中。

见:https://developer.hashicorp.com/terraform/language/resources/provisioners/local-exec

最新更新