我们可以通过cloudformation模板创建用户吗?

时间:2018-08-22 07:14:40

标签: amazon-web-services amazon-cloudformation

我正在尝试在EC2实例上创建本地用户,并传递公钥以启用SSH。当我通过cloudformation模板或从控制台(在User-Date中传递脚本)进行操作时,此操作无效。

但是当实例启动后在腻子上使用它时,它会起作用。

CLoudFormation模板(不创建用户)-

"UserData" : {
         "Fn::Base64" : {
            "Fn::Join" : [
               "", [
                  "#!/bin/bash\n",
                  "adduser webadm\n",
                  "su - webadm\n",
                  "mkdir .ssh\n",
                  "chmod 700 .ssh\n",
                  "cd .ssh\n",
                  "touch authorized_keys\n",
                  "chmod 600 authorized_keys\n",
                  "curl http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key > authorized_keys\n"
               ]
            ]
         }
        }
        }

通过控制台执行操作(不创建用户)-

#!/bin/bash
adduser webadm
su - webadm
mkdir .ssh
chmod 700 .ssh
cd .ssh
touch authorized_keys
chmod 600 authorized_keys
curl http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key > authorized_keys

同样,该脚本在实例启动后从腻子执行时有效。不确定,是否可以在使用cloudformation或控制台启动实例时完成。

1 个答案:

答案 0 :(得分:0)

如果有人在寻找解决方案,就在这里。

"UserData" : {
         "Fn::Base64" : {
            "Fn::Join" : [
               "", [
                  "#!/bin/bash\n",
                  "adduser webadm\n",
                  "su - webadm\n",
                  "/bin/mkdir /home/webadm/.ssh\n",
                  "chmod 700 .ssh\n",
                  "cd .ssh\n",
                  "/bin/touch /home/webadm/.ssh/authorized_keys\n",
                  "chmod 600 authorized_keys\n",
                  "curl http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /home/webadm/.ssh/authorized_keys\n"
               ]
            ]
         }

像魅力一样工作。