Terraform 0.12.x
我正在创建一个AWS EC2实例,并希望在启动时执行shell脚本,因此我将它们放在资源的user_data_base64中。我看到一些人被处死,但不是全部。
locals {
user_data = <<EOF
#!/bin/bash
systemctl start docker.service
if [ ! -d /mnt/jenkins_master ]; then
mkdir -p /mnt/jenkins_master
mount /dev/xvdf /mnt/jenkins_master
fi
cp -f /etc/fstab /etc/fstab.bak
echo "UUID=`blkid -o value -s UUID /dev/xvdf` /mnt/jenkins_master ext4 defaults,nofail 0 2" >> /etc/fstab
sudo su - jenkins
`aws ecr get-login --no-include-email --region us-east-1`
docker pull "${var.ecr_url}/${var.jenkins_image}:${var.jenkins_version}"
docker run -d -p 8080:8080 -v /mnt/jenkins_master/jenkins_home:/var/jenkins_home --name "${var.jenkins_image} ${var.ecr_url}/${var.jenkins_image}:${var.jenkins_version}"
EOF
}
resource "aws_instance" "jenkins_master_blue" {
...
user_data_base64 = base64encode(local.user_data)
...
}我没有看到回显到/etc/fstab中,也没有看到执行的docker run ...命令。
发布于 2020-11-12 09:29:44
下面是脚本中一些看起来错误的命令
据我所知,
centos用户,或者对于Amazon Linux,它将是ec2-user。在运行此脚本之前,您是否切换到root?如果不是,则需要使用sudo前缀才能编辑fstab和systemctl start docker.service.sudo su - jenkins,然后尝试以jenkins用户身份运行容器。您是否将jenkins用户添加到docker组?如果没有,则jenkins用户没有运行容器的权限。userX身份创建目录mkdir -p /mnt/jenkins_master,并以userX身份装载它。通常,这意味着唯一的userX将能够访问(至少写权限)此目录。您是否检查过jenkins用户对此目录是否具有读/写权限?sudo su - jenkins切换为jenkins用户?jenkins有权控制docker?sudo systemctl enable docker.service.简单解释:看起来问题的原因是权限不足
https://stackoverflow.com/questions/64796469
复制相似问题