涛子 - 简单就是美

成单纯魁增,永继振国兴,克复宗清政,广开家必升

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  428 随笔 :: 0 文章 :: 19 评论 :: 22万 阅读

手册: https://cloudinit.readthedocs.io/en/latest/index.html

1. 安装

# dnf install -y cloud-init

2. 配置

# cat /etc/cloud/cloud.cfg
users:
 - default
 - name: rocky
   groups: wheel
   shell: /bin/bash
   lock_passwd: 0
   passwd: $6$MySalt$Ns31ZOCCyA3AXLjaqyVLM2xlzgfKq9X7.4lL1d26p0vbxzIOMWKjyEPkEizmOVQxiA8l5QSMjeEYDWNLrSM74/
   sudo: ALL=(ALL) NOPASSWD:ALL

disable_root: 0
ssh_pwauth:   1

manage_etc_hosts: 0
package_update: 0
package_upgrade: 0

yum_repos:
  epel:
    name: Extra Packages for Enterprise Linux $releasever - $basearch
    baseurl: https://mirrors.nju.edu.cn/epel/$releasever/Everything/$basearch
    enabled: 1
    gpgcheck: 0
  epel-modular:
    name: Extra Packages for Enterprise Linux Modular $releasever - $basearch
    baseurl: https://mirrors.nju.edu.cn/epel/$releasever/Modular/$basearch
    enabled: 1
    gpgcheck: 0
  Rocky-AppStream:
    name: Rocky Linux $releasever - AppStream
    baseurl: https://mirrors.nju.edu.cn/rocky/$releasever/AppStream/$basearch/os/
    enabled: 1
    gpgcheck: 0
  Rocky-BaseOS:
    name: Rocky Linux $releasever - BaseOS
    baseurl: https://mirrors.nju.edu.cn/rocky/$releasever/BaseOS/$basearch/os/
    enabled: 1
    gpgcheck: 0
  Rocky-Extras:
    name: Rocky Linux $releasever - Extras
    baseurl: https://mirrors.nju.edu.cn/rocky/$releasever/extras/$basearch/os/
    enabled: 1
    gpgcheck: 0
  Rocky-HighAvailability:
    name: Rocky Linux $releasever - HighAvailability
    baseurl: https://mirrors.nju.edu.cn/rocky/$releasever/HighAvailability/$basearch/os/
    enabled: 0
    gpgcheck: 0
  Rocky-Plus:
    name: Rocky Linux $releasever - Plus
    baseurl: https://mirrors.nju.edu.cn/rocky/$releasever/plus/$basearch/os/
    enabled: 0
    gpgcheck: 0
  Rocky-PowerTools:
    name: Rocky Linux $releasever - PowerTools
    baseurl: https://mirrors.nju.edu.cn/rocky/$releasever/PowerTools/$basearch/os/
    enabled: 0
    gpgcheck: 0
  Rocky-ResilientStorage:
    name: Rocky Linux $releasever - ResilientStorage
    baseurl: https://mirrors.nju.edu.cn/rocky/$releasever/ResilientStorage/$basearch/os/
    enabled: 0
    gpgcheck: 0
  Rocky-RT:
    name: Rocky Linux $releasever - Realtime
    baseurl: https://mirrors.nju.edu.cn/rocky/$releasever/RT/$basearch/os/
    enabled: 0
    gpgcheck: 0

packages:
 - bind-utils
 - net-tools
 - vim
 - python36

mount_default_fields: [~, ~, 'auto', 'defaults,nofail,x-systemd.requires=cloud-init.service', '0', '2']
resize_rootfs_tmp: /dev
ssh_deletekeys:   0
ssh_genkeytypes:  ['rsa', 'ecdsa', 'ed25519']
syslog_fix_perms: ~
disable_vmware_customization: false

cloud_init_modules:
 - disk_setup
 - migrator
 - bootcmd
 - write-files
 - growpart
 - resizefs
 - set_hostname
 - update_hostname
 - update_etc_hosts
 - rsyslog
 - users-groups
 - ssh

cloud_config_modules:
 - mounts
 - locale
 - set-passwords
 - rh_subscription
 - yum-add-repo
 - timezone
 - disable-ec2-metadata
 - runcmd

cloud_final_modules:
 - package-update-upgrade-install
 - puppet
 - chef
 - salt-minion
 - mcollective
 - rightscale_userdata
 - scripts-per-once
 - scripts-per-boot
 - scripts-per-instance
 - scripts-user
 - ssh-authkey-fingerprints
 - keys-to-console
 - phone-home
 - final-message
 - power-state-change

system_info:
  default_user:
    name: cloud-user
    lock_passwd: true
    gecos: Cloud User
    groups: [adm, systemd-journal]
    sudo: ["ALL=(ALL) NOPASSWD:ALL"]
    shell: /bin/bash
  distro: rhel
  paths:
    cloud_dir: /var/lib/cloud
    templates_dir: /etc/cloud/templates
  ssh_svcname: sshd

# vim:syntax=yaml
2 - 7 行 : 添加用户rocky,允许sudo管理员权限,设置密码,hash密码生成 python -c 'import crypt; print(crypt.crypt("12345678", "$6$MySalt"))' 
9 - 10 行 : 允许root登录,允许ssh密码认证方式 
12 - 14 行 :  不更新/etc/hosts,不升级安装包
清除日志
# cloud-init clean --logs

检查配置文件
# cloud-init init --local

执行配置
# cloud-init init

3. 日志与数据目录

日志
/var/log/cloud-init.log
/var/log/cloud-init-output.log

数据
# tree /var/lib/cloud/
/var/lib/cloud/
├── data
│   ├── instance-id
│   ├── previous-datasource
│   ├── previous-hostname
│   ├── previous-instance-id
│   ├── python-version
│   ├── result.json
│   ├── set-hostname
│   └── status.json
├── handlers
├── instance -> /var/lib/cloud/instances/ee3549784d09e169b07f3e1118f6d91451cb2d5f
├── instances
│   └── ee3549784d09e169b07f3e1118f6d91451cb2d5f
│       ├── boot-finished
│       ├── cloud-config.txt
│       ├── datasource
│       ├── handlers
│       ├── obj.pkl
│       ├── scripts
│       ├── sem
│       │   ├── config_disk_setup
│       │   ├── config_keys_to_console
│       │   ├── config_locale
│       │   ├── config_mcollective
│       │   ├── config_mounts
│       │   ├── config_package_update_upgrade_install
│       │   ├── config_phone_home
│       │   ├── config_power_state_change
│       │   ├── config_puppet
│       │   ├── config_rh_subscription
│       │   ├── config_rightscale_userdata
│       │   ├── config_rsyslog
│       │   ├── config_runcmd
│       │   ├── config_salt_minion
│       │   ├── config_scripts_per_instance
│       │   ├── config_scripts_user
│       │   ├── config_set_hostname
│       │   ├── config_set_passwords
│       │   ├── config_ssh
│       │   ├── config_ssh_authkey_fingerprints
│       │   ├── config_timezone
│       │   ├── config_users_groups
│       │   ├── config_write_files
│       │   ├── config_yum_add_repo
│       │   ├── consume_data
│       │   └── update_sources
│       ├── user-data.txt
│       ├── user-data.txt.i
│       ├── vendor-data2.txt
│       ├── vendor-data2.txt.i
│       ├── vendor-data.txt
│       └── vendor-data.txt.i
├── scripts
│   ├── per-boot
│   ├── per-instance
│   ├── per-once
│   └── vendor
├── seed
└── sem
    └── config_scripts_per_once.once

15 directories, 45 file

4. cloud-init 重新初始化

登录实例
# cloud-init clean
# rm -rf /var/lib/cloud
# cloud-init init --local
# cloud-init init
# cloud-init modules --mode=config
# cloud-init modules --mode=final
posted on   北京涛子  阅读(952)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示