1

我正在运行multipass并且cloudinit我有一个 bash 脚本,我需要在部署一次 VM 后运行该脚本,但要针对每个用户帐户。它有简单的命令,主要用于自定义 vim 和bash.rc. 我怎样才能做到这一点?

我尝试使用cloudinit 的 runcmd 功能,但这有点问题,甚至像下面这样的简单命令也不会输出任何内容。

package_update: true                                                                                                                                                                                  
 package_upgrade: true                                                       
 packages:                                                                   
   - git                                                                     
   - openssh-server                                                          
   - zip                                                                     
   - tree                                                                    
   - vim                                                                     
   - htop                                                                    
   - net-tools                                                               
   - sysstat                                                                 
   - locate                                                                  
 cloud_config_modules:                                                       
   - runcmd                                                                  
 cloud_final_modules:                                                        
   - scripts-user                                                            
 runcmd:                                                                     
   - [ ls, -l, / ]                                                           
   - [ sh, -xc, "echo $(date) ': hello world!'" ]                            
   - [ bash, -c, echo "=========hello world'=========" >>foo.bar]            
 users:                                                                      
   - name: aryan                                                             
     lock_passwd: true                                                       
     sudo: ALL=(ALL) NOPASSWD:ALL                                            
     shell: /bin/bash                                                        
     ssh_authorized_keys:                                                    
       - ...
4

1 回答 1

0

这个要点在技术上是正确的,但它有点误导。runcmdincloud_config_modulesscripts-userincloud_final_modules已经默认指定 in /etc/cloud/cloud.cfg,所以除非你想明确关闭 cloud-init 正在使用的其他模块(除非你有充分的理由,否则你不想这样做),你不要需要指定cloud_config_modulescloud_final_modules在您的云配置中。

您是否包含#cloud-config在用户数据脚本的顶部?如果没有,您的云配置无效。如果您确实包含了它,这些 runcmds 将全部工作。的输出ls和日期/回声将在/var/log/cloud-init-output.log并且foo.bar将在/. 如果没有,那么您的云配置中还有其他问题,或者阻止了 cloud-init 完全初始化。

在您启动的实例上,您可以运行cloud-init status --long以查看 cloud-init 是成功还是失败。您还可以检查/var/log/cloud-init.logTraceback了解WARN失败的原因。搜索rumcmdscripts-user应该告诉您这些命令是否运行以及在哪里写出什么。

于 2021-05-04T02:19:53.607 回答