zoukankan      html  css  js  c++  java
  • cloud-init使用技巧

    对于 Linux 镜像,cloud-init 负责 instance 的初始化工作。cloud-init 功能很强大,能做很多事情,而且我们可以通过修改配置文件灵活定制 cloud-init。

    cloud-init 的配置文件为 /etc/cloud/cloud.cfg,这里举几个应用场景:

    1. 如果希望 root 能够直接登录 instance(默认不允许 root 登录),设置:

    disable_root: 0

    2. 如果希望能以 ssh passwod 方式登录(默认只能通过 private key 登录),设置:

     

    ssh_pwauth: 1

     


    3. 如果希望能够修改 instance 的 hostname(默认 instance 每次重启后 cloud-init 都会重新将 hostname 恢复成初始值),将cloud_init_modules 列表中下面两项删除或注释掉:

    - set_hostname
    - update_hostname

     

    instance 每次启动 cloud-init 都会执行初始化工作,如果希望改变所有 instance 的初始化行为,则修改镜像的 /etc/cloud/cloud.cfg 文件;如果只想改变某个 instance 的初始化行为,直接修改 instance 的 /etc/cloud/cloud.cfg。

     
    Set Passwords:
     
    例子1:
    
    
    chpasswd:
      list: |
        user1:password1
        user2:password2
        user3:RANDOM
      expire: False
     

    例子2:

     #cloud-config
    
    chpasswd:
    
       list: |
    
           root:123456
    
           ubuntu:123456
    
       expire: false

    如果指定expire, 并且设置为 false, 则将密码全局配置键用作所有用户帐户的密码。如果指定了expire并将其设置为 true, 则用户密码将过期, 从而防止使用默认的系统密码。

    如果提供了list键, 则可以指定username:password列表。指定的用户名必须已存在于系统中, 或者已使用 cc_users_groups 模块创建

    密码可以使用username:RANDOM 或者 username:R生成

     如果提供了RAMDOM或者R选项的话密码会被设置为自动生成的字符串.这个密码可以在console-log(nova console-log )或者在/var/log/cloudinit-output.log中查看.

    注意:cloud-init 只有第一次启动的时候会修改密码,也就是说第一次安装cloud-init,然后配置/etc/cloud/cloud.cfg,关机清理信息。再开机会强行修改密码。

    接着再开机不会强行修改密码,即使删除cloud-init再重装配置也不行。

    下面是cloud.cfg的一个例子:

    users:
     - default
    
    disable_root: 0
    ssh_pwauth:   1
    
    locale_configfile: /etc/sysconfig/i18n
    mount_default_fields: [~, ~, 'auto', 'defaults,nofail', '0', '2']
    resize_rootfs_tmp: /dev
    ssh_deletekeys:   0
    ssh_genkeytypes:  ~
    syslog_fix_perms: ~
    
    cloud_init_modules:
     - migrator
     - bootcmd
     - write-files
     - growpart
     - resizefs
     - set_hostname
     - update_hostname
     - update_etc_hosts
     - rsyslog
     - users-groups
     - ssh
    
    cloud_config_modules:
     - mounts
     - locale
     - set-passwords
     - yum-add-repo
     - package-update-upgrade-install
     - timezone
     - puppet
     - chef
     - salt-minion
     - mcollective
     - disable-ec2-metadata
     - runcmd
    
    cloud_final_modules:
     - rightscale_userdata
     - scripts-per-once
     - scripts-per-boot
     - scripts-per-instance
     - scripts-user
     - ssh-authkey-fingerprints
     - keys-to-console
     - phone-home
     - final-message
    
    system_info:
      default_user:
        name: root
        lock_passwd: true
        gecos: Cloud User
        groups: [wheel, adm]
        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
    chpasswd:
       list: |
           root:123456
       expire: true  

    注意:

    1.如果镜像没有设置cloud_init,即使在计算节点的 /etc/nova/nova.conf 中配置 force_config_drive = true,也不会调用元数据信息
    2.如果镜像设置了cloud_init,在计算节点的 /etc/nova/nova.conf 中没有配置 force_config_drive = true,依然会调用元数据信息,
    而此时因为不知道怎么去调,所以会有一些报错信息,这样会导致开机比较久,而且每次开机都会读取元数据信息

     提醒和解决方法:

    如果之前的镜像是没有安装cloud-init,这时会有这种情况出现:
    1.在/etc/nova/nova.conf中没有配置force_config_drive = true的计算节点中的机器,任何操作都是正常的;
    即使在计算节点的 /etc/nova/nova.conf 中配置 force_config_drive = true,也不会调用元数据信息

    2.这时通过rbd ls vms查看的所有虚拟机是这样子的:
    4ff497bd-cd3c-4b8e-a607-40b08ba90ce1_disk


    但是如果之后的镜像安装了cloud-init,则会出现这种情况:
    1.在/etc/nova/nova.conf中配置了force_config_drive = true,那么之前用没有安装cloud-init的镜像安装的这些虚拟机
    一旦重启就会变成ERROR 或者NOSTATE状态。
    原因:
    这时通过rbd ls vms查看的所有虚拟机是这样子的
    4ff497bd-cd3c-4b8e-a607-40b08ba90ce1_disk
    4ff497bd-cd3c-4b8e-a607-40b08ba90ce1_disk_config
    并且读取的是4ff497bd-cd3c-4b8e-a607-40b08ba90ce1_disk_config文件

    2.如果镜像设置了cloud_init,在计算节点的 /etc/nova/nova.conf 中没有配置 force_config_drive = true,依然会调用元数据信息,
    而此时因为不知道怎么去调,所以会有一些报错信息,这样会导致开机比较久,而且每次开机都会读取元数据信息


    解决:
    1.修改数据库,然后关闭虚拟机再开机

    推荐:
    1.如果之前/etc/nova/nova.conf没有force_config_drive = true选项,则建议不要安装cloud_init;否则会出现各种奇怪的问题


    有朋友说:突然多出的4ff497bd-cd3c-4b8e-a607-40b08ba90ce1_disk_config文件是因为迁移导致的,可能跟force_config_drive无关;
    但是没有实验证明。

     

    参考:http://www.cnblogs.com/CloudMan6/p/6431771.html

     https://www.2cto.com/net/201708/667502.html

  • 相关阅读:
    线程进程之间的关系
    socket网络编程
    Docker在github上的站点
    大型网站架构体系的演变
    centos7 安装SSH
    如何在CentOS 7中禁用IPv6
    在 Docker 上运行一个 RESTful 风格的微服务
    docker 操作命令详解
    玩转Docker镜像
    搭建自己的 Docker 私有仓库服务
  • 原文地址:https://www.cnblogs.com/zhongguiyao/p/8328872.html
Copyright © 2011-2022 走看看