Как установить операционную систему (CentOS 6/7) с установочного носителя в среде Openstack через Web интерфейс?

Я часто получаю вопросы о создании нового экземпляра со своего установочного носителя в среде openstack. Здесь я опишу простые инструкции для моих клиентов, которые покажут шаг за шагом через установку нового экземпляра в среде openstack из iso-файла. Дело в том, что при загрузке любой копии виртуальной машины с указанием загрузочного устройства image, этот image (iso) копируется в новый том, из которого загружается.

В общих чертах можно выделить следующие шаги:
краткое пособие:

  1. Загрузка iso образа диска как нового образа(image).
  2. Создание нового том(volume) из образа(image).
  3. Создание нового чистого том для будущего загрузочного диска (желательно “зануление” всего пространства в случае CEPH).
  4. Запуск нового экземпляра с загрузкой с тома из шага 2.
  5. Подключение “чистого” тома из шага 3 к экземпляру.
  6. Установка системы на “чистый” том.
  7. Запуск экземпляр и создание нового как с загрузкой с тома с установленной системой.
  8. Создание по необходимости снимка “чистой” системы, а затем запуск экземпляр с загрузкой с моментального снимка.

“Как установить операционную систему (CentOS 6/7) с установочного носителя в среде Openstack через Web интерфейс?”Continue reading

Running certbot – disable auto upgrade.

certbot-auto всегда будет пытаться извлечь самую новую версию из самой последней версии. Если вы хотите, чтобы он был заблокирован на определенную версию и не получал автоматических обновлений, запустите его с помощью флага

1
2
3
4
5
6
7
8
9
10
# scripts/letsencrypt/certbot-auto --no-self-upgrade
...
Saving debug log to /var/log/letsencrypt/letsencrypt.log

How would you like to authenticate and install certificates?
-------------------------------------------------------------------------------
1: Apache Web Server plugin - Beta (apache)
2: Nginx Web Server plugin - Alpha (nginx)
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

openSUSE: установить альтернативную версию python без изменения версии по умолчанию

Если вам нужно поддерживать разные версии одновременно, лучше всего установить их в свое дерево. configure принимает необязательный аргумент –prefix =/path/to/installation/root.
Мы могли бы установить дополнительный программный пакет в виде файла /opt/local/x86_64-linux-gnu/python-2.6.6. Пользователи, которым нужна эта конкретная версия, могут затем добавить /opt/local/x86_64-linux-gnu/python-2.6.6/bin к их $ PATH или использовать virtualenvили GNU stow .

Для примера следующий набор шагов:

“openSUSE: установить альтернативную версию python без изменения версии по умолчанию”Continue reading

BASH: сохраняем историю со всех терминалов

Меня давно раздражает поведение файла истории Баша. Если вы используете несколько терминалов, вся история теряется, за исключением закрытия последнего терминала. Правильное поведение должно состоять в том, чтобы сохранить всю историю со всех терминалов! Легкий способ сделать это – просто сохранить команды в файле истории в реальном времени. Благодаря Linux Commando я знаю, как это сделать. Вот секрет:

1
2
shopt -s histappend
PROMPT_COMMAND = "history -a; $ PROMPT_COMMAND"

Поместите эти строки в ваш bash_profile или bashrc. Первая строка говорит bash добавить к истории вместо полной перезаписи. Вторая строка вызывает историю – каждый раз, когда отображается приглашение, которое по существу добавляет последнюю команду в файл истории.

Openstack Horizon: Bug of ‘FileField need clean up temp file….’ or how to remove supefluos files in Horizon/Django after uploading..

After few day envestigation code I created patch. I hope core developers can use it in horizon …

1
2
3
4
5
6
7
8
9
10
11
12
13
14
234 @@ -442,7 +442,12 @@
235                                      {'data': data})
236          else:
237              def upload():
238 -                return glanceclient(request).images.upload(image.id, data)
239 +                glance_answer = glanceclient(request).images.upload(image.id, data)
240 +                if isinstance(data, TemporaryUploadedFile):
241 +                   if glance_answer[0].ok is True :
242 +                      data.file.close_called = False
243 +                      data.file.close()
244 +                return glance_answer
245              thread.start_new_thread(upload, ())
246
247      return Image(image)

Enjoy! Free!

Scroll to top