Openstack:Packer+;云初始化

Openstack:Packer+;云初始化,openstack,opensuse,kde,packer,openstack-heat,Openstack,Opensuse,Kde,Packer,Openstack Heat,我想创建一个定制的openstack OpenSUSE15映像,其中包含一些定制软件和图形界面。我使用了一个现有的OpenSUSE15.0映像和packer来构建该映像。它很好用。打包器json文件如下所示: "builders": [ { "type" : "openstack", "ssh_username" : "root", "image_name": "OpenSUSE_15_custom_kde"

我想创建一个定制的openstack OpenSUSE15映像,其中包含一些定制软件和图形界面。我使用了一个现有的OpenSUSE15.0映像和packer来构建该映像。它很好用。打包器json文件如下所示:

    "builders": [
    {
            "type" : "openstack",
            "ssh_username" : "root",
            "image_name": "OpenSUSE_15_custom_kde",
            "source_image": "OpenSUSE 15",
            "flavor": "m1.medium",
            "networks": "public-network"
    }
    ],
    "provisioners":[
    {
            "type": "shell",
            "inline": [
                    "sleep 10",
                    "sudo -s",
                    "zypper --gpg-auto-import-keys refresh",
                    "zypper -n up -y",
                    "zypper -n clean -a",
                    "zypper -n addrepo -f http://download.opensuse.org/repositories/devel\\:/languages\\:/R\\:/patched/openSUSE_Leap_15.0/ R-patched",
                    "zypper -n addrepo -f http://download.opensuse.org/repositories/devel\\:/languages\\:/R\\:/released/openSUSE_Leap_15.0/ R-released",
                    "zypper --gpg-auto-import-keys refresh",
                    "zypper -n install -y R-base R-base-devel R-recommended-packages rstudio",
                    "zypper -n clean -a",
                    "zypper --non-interactive install -y -t pattern kde kde_plasma devel_kernel devel_python3 devel_C_C++ office x11",
                    "zypper -n install xrdp",
                    "zypper -n clean -a",
                    "zypper -n dup -y",
                    "systemctl enable xrdp",
                    "systemctl start xrdp",
                    "cloud-init clean --logs",
                    "zypper -n install -y cloud-init growpart yast2-network yast2-services-manager acpid",
                    "cat /dev/null > /etc/udev/rules.d/70-persistent-net.rules",
                    "systemctl disable cloud-init.service cloud-final.service cloud-init-local.service cloud-config.service",
                    "systemctl enable cloud-init.service cloud-final.service cloud-init-local.service cloud-config.service sshd",
                    "sudo systemctl stop firewalld",
                    "sudo systemctl disable firewalld",
                    "sed -i 's/GRUB_TIMEOUT=.*$/GRUB_TIMEOUT=0/g' /etc/default/grub",
                    "exec grub2-mkconfig -o /boot/grub2/grub.cfg '$@'",
                    "systemctl restart cloud-init",
                    "systemctl daemon-reload",
                    "cat /dev/null > ~/.bash_history && history -c && sudo su",
                    "cat /dev/null > /var/log/wtmp",
                    "cat /dev/null > /var/log/btmp",
                    "cat /dev/null > /var/log/lastlog",
                    "cat /dev/null > /var/run/utmp",
                    "cat /dev/null > /var/log/auth.log",
                    "cat /dev/null > /var/log/kern.log",
                    "cat /dev/null > ~/.bash_history && history -c",
                    "rm ~/.ssh/authorized_keys"
                ]
        },
        {
                "type": "file",
                "source": "./cloud_init/cloud.cfg",
                "destination": "/etc/cloud/cloud.cfg"
        }
        ]

}
packer在构建和配置阶段没有错误

在第二个阶段,当通过openstack客户端通过热模板生成此基础图像时,我希望完成一些个性化任务。用户创建,授予ssh访问权限(包括调整sshd_配置文件…)。这是通过
init_image.sh
文件完成的

#!/bin/bash

useradd -m $USERNAME -p $PASSWD -s /bin/bash
usermod -a -G sudo $USERNAME

tee /etc/ssh/banner <<EOF
You are one lucky user, if you bear the key...
EOF


tee /etc/ssh/sshd_config <<EOF 
##  SOME IMPORTANT SSHD CONFIGURATIONS
EOF

sudo -u $USERNAME -H sh -c 'cd ~;mkdir ~/.ssh/;echo "$SSHPUBKEY" > ~/.ssh/authorized_keys;chmod -R 700 ~/.ssh/;chmod 600 ~/.ssh/authorized_keys;'

systemctl restart sshd.service


voldata_dev="/dev/disk/by-id/virtio-$(echo $VOLDATA | cut -c -20)"
mkfs.ext4 $voldata_dev               
mkdir -pv /home/$USERNAME/share
echo "$voldata_dev /home/$USERNAME/share ext4 defaults 1 2" >> /etc/fstab
mount /home/$USERNAME/share
chown -R $USERNAME:users /home/$USERNAME/share/


systemctl enable xrdp
systemctl start xrdp
如果我在模板中使用原始图像,我没有问题(但是,构建过程需要很长时间),我需要重新启动以获得图形KDE界面

但是,如果我使用带有打包器的映像构建,我的用户_数据会被忽略吗?我无法登录,未创建用户个性化用户。。。我错过了什么?为什么它不起作用?如您所见,我清理cloud init,重新启动服务。。。我被困在大时间

更新 是可从计算机访问的启动日志

更新2 这是
cloud init analyze show
的输出:

    -- Boot Record 01 --
The total time elapsed since completing an event is printed after the "@" character.
The time the event takes is printed after the "+" character.

Starting stage: init-local
|`->no cache found @00.01000s +00.00000s
|`->no local data found from DataSourceOpenStackLocal @00.04700s +15.23000s
Finished stage: (init-local) 15.31200 seconds 

Starting stage: init-network
|`->no cache found @16.01000s +00.00100s
|`->no network data found from DataSourceOpenStack @16.01700s +00.02600s
|`->found network data from DataSourceNone @16.04300s +00.00100s
|`->setting up datasource @16.09000s +00.00000s
|`->reading and applying user-data @16.10000s +00.00200s
|`->reading and applying vendor-data @16.10200s +00.00000s
|`->activating datasource @16.12100s +00.00100s
|`->config-migrator ran successfully @16.17900s +00.00100s
|`->config-seed_random ran successfully @16.18000s +00.00100s
|`->config-bootcmd ran successfully @16.18200s +00.00000s
|`->config-write-files ran successfully @16.18200s +00.00100s
|`->config-growpart ran successfully @16.18300s +00.46100s
|`->config-resizefs ran successfully @16.64500s +01.33400s
|`->config-disk_setup ran successfully @17.98100s +00.00300s
|`->config-mounts ran successfully @17.98500s +00.00400s
|`->config-set_hostname ran successfully @17.99000s +00.09800s
|`->config-update_hostname ran successfully @18.08900s +00.01000s
|`->config-update_etc_hosts ran successfully @18.10000s +00.00100s
|`->config-rsyslog ran successfully @18.10100s +00.00200s
|`->config-users-groups ran successfully @18.10400s +00.00200s
|`->config-ssh ran successfully @18.10700s +00.61400s
Finished stage: (init-network) 02.73600 seconds 

Starting stage: modules-config
|`->config-locale ran successfully @35.00200s +00.00400s
|`->config-set-passwords ran successfully @35.00600s +00.00100s
|`->config-zypper-add-repo ran successfully @35.00700s +00.00200s
|`->config-ntp ran successfully @35.01000s +00.00100s
|`->config-timezone ran successfully @35.01100s +00.00200s
|`->config-disable-ec2-metadata ran successfully @35.01300s +00.00100s
|`->config-runcmd ran successfully @35.01800s +00.00200s
Finished stage: (modules-config) 00.05100 seconds 

Starting stage: modules-final
|`->config-package-update-upgrade-install ran successfully @35.87400s +00.00000s
|`->config-puppet ran successfully @35.87500s +00.00000s
|`->config-chef ran successfully @35.87600s +00.00000s
|`->config-mcollective ran successfully @35.87600s +00.00100s
|`->config-salt-minion ran successfully @35.87700s +00.00100s
|`->config-rightscale_userdata ran successfully @35.87800s +00.00100s
|`->config-scripts-vendor ran successfully @35.87900s +00.00500s
|`->config-scripts-per-once ran successfully @35.88400s +00.00100s
|`->config-scripts-per-boot ran successfully @35.88500s +00.00000s
|`->config-scripts-per-instance ran successfully @35.88500s +00.00100s
|`->config-scripts-user ran successfully @35.88600s +00.00100s
|`->config-ssh-authkey-fingerprints ran successfully @35.88700s +00.00100s
|`->config-keys-to-console ran successfully @35.88800s +00.09000s
|`->config-phone-home ran successfully @35.97900s +00.00100s
|`->config-final-message ran successfully @35.98000s +00.00600s
|`->config-power-state-change ran successfully @35.98700s +00.00100s
Finished stage: (modules-final) 00.13600 seconds 

Total Time: 18.23500 seconds

1 boot records analyzed
更新3
显然,当不使用
zypper-up
进行更新时,cloud-init表现良好,可以找到用户数据。因此,我不会在设置中更新映像。但是,一旦设置完毕,更新是有意义的。

在设置结束时,您应该停止cloud init并擦除状态。否则,当映像启动时,cloud init认为它已经执行了第一次启动


嘿,谢谢你的回答。我希望你能参与进来:D我看到你在关于packer的其他问题上给出了很多非常好的答案。然而,我运行了它,结果证明,这没有帮助。用户_数据仍然被忽略。我想知道删除/var/lib/cloud/时是否已经包含了
cloudinit-log
?之后我还重新启动了cloud init?如果你需要更多的信息,告诉我。。。。或者你的意思不是两行“擦除状态”?不,我只是这个意思。您是否访问了新实例(从映像启动)并检查了cloud init日志?因此,我从可以访问的机器添加了引导日志。不幸的是,我无法访问这台机器。我没有根密码,grub waiting设置为0,因此无法重置它。。。但是cloudinit的引导日志中有一些错误<代码>[27.369390]云初始化[840]:2019-08-20 06:23:29417-util.py[警告]:未找到活动元数据服务“[27.428251]云初始化[840]:2019-08-20 06:23:29475-stages.py[错误]:无法呈现网络。网络配置可能已损坏:找不到可用的网络渲染器。在列表中搜索:['eni','sysconfig','netplan']从那里看起来它运行的是OpenStack数据源。你的热量配置正确吗?试着退一步,把你现在不需要的东西都拿走,然后看看它是否管用。如果它确实一次添加一个块来了解问题。
    -- Boot Record 01 --
The total time elapsed since completing an event is printed after the "@" character.
The time the event takes is printed after the "+" character.

Starting stage: init-local
|`->no cache found @00.01000s +00.00000s
|`->no local data found from DataSourceOpenStackLocal @00.04700s +15.23000s
Finished stage: (init-local) 15.31200 seconds 

Starting stage: init-network
|`->no cache found @16.01000s +00.00100s
|`->no network data found from DataSourceOpenStack @16.01700s +00.02600s
|`->found network data from DataSourceNone @16.04300s +00.00100s
|`->setting up datasource @16.09000s +00.00000s
|`->reading and applying user-data @16.10000s +00.00200s
|`->reading and applying vendor-data @16.10200s +00.00000s
|`->activating datasource @16.12100s +00.00100s
|`->config-migrator ran successfully @16.17900s +00.00100s
|`->config-seed_random ran successfully @16.18000s +00.00100s
|`->config-bootcmd ran successfully @16.18200s +00.00000s
|`->config-write-files ran successfully @16.18200s +00.00100s
|`->config-growpart ran successfully @16.18300s +00.46100s
|`->config-resizefs ran successfully @16.64500s +01.33400s
|`->config-disk_setup ran successfully @17.98100s +00.00300s
|`->config-mounts ran successfully @17.98500s +00.00400s
|`->config-set_hostname ran successfully @17.99000s +00.09800s
|`->config-update_hostname ran successfully @18.08900s +00.01000s
|`->config-update_etc_hosts ran successfully @18.10000s +00.00100s
|`->config-rsyslog ran successfully @18.10100s +00.00200s
|`->config-users-groups ran successfully @18.10400s +00.00200s
|`->config-ssh ran successfully @18.10700s +00.61400s
Finished stage: (init-network) 02.73600 seconds 

Starting stage: modules-config
|`->config-locale ran successfully @35.00200s +00.00400s
|`->config-set-passwords ran successfully @35.00600s +00.00100s
|`->config-zypper-add-repo ran successfully @35.00700s +00.00200s
|`->config-ntp ran successfully @35.01000s +00.00100s
|`->config-timezone ran successfully @35.01100s +00.00200s
|`->config-disable-ec2-metadata ran successfully @35.01300s +00.00100s
|`->config-runcmd ran successfully @35.01800s +00.00200s
Finished stage: (modules-config) 00.05100 seconds 

Starting stage: modules-final
|`->config-package-update-upgrade-install ran successfully @35.87400s +00.00000s
|`->config-puppet ran successfully @35.87500s +00.00000s
|`->config-chef ran successfully @35.87600s +00.00000s
|`->config-mcollective ran successfully @35.87600s +00.00100s
|`->config-salt-minion ran successfully @35.87700s +00.00100s
|`->config-rightscale_userdata ran successfully @35.87800s +00.00100s
|`->config-scripts-vendor ran successfully @35.87900s +00.00500s
|`->config-scripts-per-once ran successfully @35.88400s +00.00100s
|`->config-scripts-per-boot ran successfully @35.88500s +00.00000s
|`->config-scripts-per-instance ran successfully @35.88500s +00.00100s
|`->config-scripts-user ran successfully @35.88600s +00.00100s
|`->config-ssh-authkey-fingerprints ran successfully @35.88700s +00.00100s
|`->config-keys-to-console ran successfully @35.88800s +00.09000s
|`->config-phone-home ran successfully @35.97900s +00.00100s
|`->config-final-message ran successfully @35.98000s +00.00600s
|`->config-power-state-change ran successfully @35.98700s +00.00100s
Finished stage: (modules-final) 00.13600 seconds 

Total Time: 18.23500 seconds

1 boot records analyzed
systemctl stop cloud-init 
rm -rf /var/lib/cloud/