AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 797482
Accepted
Mike Conigliaro
Mike Conigliaro
Asked: 2016-08-18 11:47:31 +0800 CST2016-08-18 11:47:31 +0800 CST 2016-08-18 11:47:31 +0800 CST

如何让 EC2 用户数据脚本在启动时再次运行?

  • 772

在 cloud-init 在 EC2 实例的第一次启动时运行用户数据脚本后,可能会写入一个状态文件,以便 cloud-init 在后续重启时不会再次运行该脚本。在某些情况下,我想删除此状态文件,以便再次运行用户数据脚本。它在哪里?

amazon-ec2 cloud-init
  • 4 4 个回答
  • 44389 Views

4 个回答

  • Voted
  1. Best Answer
    Mike Conigliaro
    2016-08-18T11:47:31+08:002016-08-18T11:47:31+08:00

    rm /var/lib/cloud/instances/*/sem/config_scripts_user

    确认工作:

    • CentOS 7.4
    • Ubuntu 14.04
    • Ubuntu 16.04

    为了完整起见,如果您希望跟踪该 AMI [有一个父 AMI ......] 并且它们都运行cloud-init用户数据的事实/可能性,您可以仅删除当前信号量。

    rm /var/lib/cloud/instance/sem/config_scripts_user

    • 34
  2. Hardeep Singh
    2019-02-13T23:51:08+08:002019-02-13T23:51:08+08:00

    您还可以将用户数据配置为在每次启动时重新运行,而不是删除状态文件。您必须在用户数据脚本中使用cloud_final_modules以重新运行用户数据脚本,为此您必须自定义 uderdata 以在用户数据中包含多个文件。示例用户数据文件如下:

    Content-Type: multipart/mixed; boundary="//"
    MIME-Version: 1.0
    
    --//
    Content-Type: text/cloud-config; charset="us-ascii"
    MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Content-Disposition: attachment; filename="cloud-config.txt"
    
    #cloud-config
    cloud_final_modules:
    - [scripts-user, always]
    
    --//
    Content-Type: text/x-shellscript; charset="us-ascii"
    MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Content-Disposition: attachment; filename="userdata.txt"
    
    #!/bin/bash
    /bin/echo "Hello World" >> /tmp/userdata-test.txt
    --//
    

    这将使 userdata 脚本在每个启动过程的最后一步执行。这里只执行一行bin/echo "Hello World" >> /tmp/userdata-test.txt,将其替换为每次启动机器时都需要执行的 shell 脚本。

    • 6
  3. Pratik Singhal
    2017-02-24T08:22:15+08:002017-02-24T08:22:15+08:00

    您可以将您的脚本放在 /etc/rc.local 中,这将在每次重新启动时运行该脚本。

    • 2
  4. devops-admin
    2021-10-27T02:10:16+08:002021-10-27T02:10:16+08:00

    在启动 ubuntu ec2 实例后,以下脚本对我来说非常有效。

    Content-Type: multipart/mixed; boundary="//"
    MIME-Version: 1.0
    
    --//
    Content-Type: text/cloud-config; charset="us-ascii"
    MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Content-Disposition: attachment; filename="cloud-config.txt"
    
    #cloud-config
    cloud_final_modules:
    - [scripts-user, always]
    
    --//
    Content-Type: text/x-shellscript; charset="us-ascii"
    MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Content-Disposition: attachment; filename="userdata.txt"
    
    
    
    #!/bin/bash
    /bin/echo "Hello World" >> /tmp/userdata-test.txt
    sudo apt update
    sudo apt install docker.io -y
    sudo docker run -d -p 8080:80 --name web nginx
    sudo docker ps
    touch test
    echo " " >> /home/ubuntu/.ssh/authorized_keys 
    echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCmTigIVKPSAIeJrkkrsKYyBaUrvs4f1E8iIl7cyIsgmeTN1IZ3JU5KVH7SOcOE10+HsDRzw0d7PiRmYXeuiDyQXPbim8/skiubRX/9OkIuil1iqjGKISSWw2I/HP+RQg881PNC7OZiRWhAY2zxpaLCBjyZ53jvcvBZ/mQ1/P+rvSPZ+pV6MR8mk5j4ijvswSs6RNikf3VCIxjp/tPYYkkCU/piOqsyofPDUyVepnHCv4oEuv4nru/q9ExiOY27XDM6bFxLiyuASnE4VO99LGnq8sM2hl2nWav0vTnydJNFKAVtQ4jPxyliHeIU+8iFn+0fxlQbDJCdLPHz+h1J1CHk3yMaV0vHh1fJEQp7MIdwihU9guPZRwvJLlzmc6uVsr6sqB9kfJ3rBWYumYMh5PwBXfHl2on2y+Hu73MWn1XlR0Asd9cifU9lOagA8iovbRluR5wqUwCZpSjcTVRXZYAhs/AQVzo8BhP+x8fl1/kggsE71Z2OsjpWsCeUJXRr0ph//bVRXFz2pO5qnyFQoaXpoTYPPEHA9mHOHrIxp0IN+EvD7gaC6O84tk3RIYlVF1Eg5MNBL+vlf1EDkcC6ZyVFkQV58ooxZ3OCcHu69ipnJj0PyBwjlPOnpLhrQ+7D083QcypcXqzOzjp0/9yWsNrsBjX3WZboX0nhbJLDnkwYwQ==" >> /home/ubuntu/.ssh/authorized_keys 
    
    cat /home/ubuntu/.ssh/authorized_keys 
    --//
    
    
    • -1

相关问题

  • 权限被拒绝(公钥)。从本地 Ubuntu 到 Amazon EC2 服务器的 SSH

  • 管理员如何管理他们的 EC2 EBS 和快照?

  • 云有多大?[关闭]

  • EC2 映像启动

  • 如何将安全组添加到正在运行的 EC2 实例?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve