分类 “技术” 下的文章

Python中的euid和uid

今天遇到了一个非常奇怪的问题:在root用户下,python的sys path中包含了/usr/local路径下的site-packages目录,但是在非root用户下,却没有包含,导致该用户执行程序异常,报:ModuleNotFoundError

阅读全文>>

使用Kolla部署Mitaka版本的OpenStack

最近大半年一直在参与公司针对OpenStack的一些定制开发,主要是与Neutron组件相关。大大小小的各个项目中,与华为、中兴、EasyStack等都有过合作,每个项目基于的OpenStack版本都不一样,所以经常来回的安装部署OpenStack环境,比较繁琐,工作之余一直在寻求一种部署环境的便捷方式。目前比较主流的部署方式是devstack,也非常方便,但观察OpenStack的发展趋势,已经有越来越多的公司在做OpenStack的容器化部署,OpenStack社区也有对应的项目:kolla,虽然现在用的不是特别多,但利用容器产生的一些优势,相信在将来会有更多的公司采用容器化部署,本人在空闲时间尝试用kolla部署了一套mitaka版本的OpenStack环境(ALL IN ONE),以下是详细步骤,如果有任何问题也欢迎底下留言。

阅读全文>>

Python中的类与对象-笔记

  1. python中类也是一个对象
  2. 定义在init外的属性是类属性,定义在init内的是对象属性
  3. 修改类的属性,会影响所有该类的对象(包括已经实例化的)
  4. metaclass 是创造类,而不是实例化类的对象
  5. metaclass中操作的属性都是类的属性
  6. metaclass中通过super().__new__创建新类
  7. metaclass中通过super().__new__创建的类包含了父类的属性,可以通过getattr获取
  8. metaclass中直接修改通过getattr获取的父类属性,会更新到父类中,影响所有父类的子类
  9. metaclass中,如果父类在init外定义了某个属性,这个属性可以通过getattr获取,且被继承到子类,否则通过getattr获取的结果为None
  10. metaclass中,通过setattr设置类的属性,只作用在当前类,不会修改父类的属性

cloudinit解惑 - Local Stage

简介

  • systemd service: cloud-init-local.service
  • runs: As soon as possible with / mounted read-write.
  • blocks: as much of boot as possible, must block network bringup.
  • modules: none

阅读全文>>

cloudinit解惑 - 启动流程

cloud-init在安装的时候会在system-generators目录(例如:/usr/lib/systemd/system-generators/)下创建一个cloud-init-generator可执行文件,实际上是一个shell脚本。systemd在启动初期会执行该generator(目录下所有的generators都会在同一时间被并行执行 )。在cloud-init-generator脚本中判断了当前是否需要启动cloud-init.target,一般会检查一下几点:

阅读全文>>

cloudinit解惑 - 简介

cloud-init是用来对云实例进行初始化配置的一个工具,目前支持很多云平台,例如OpenStack、AWS、ALiYun等。

阅读全文>>