Update tacker installer for Ubuntu 24.04

* Update supported ubuntu version to 24.04.

* Replace pip with pipx since the recent pip doesn't allow system-wide
  installation of packages for PEP668.

* Drop centos-stream8 support.

Change-Id: I57334595f7dd005ff51dd3cd3c605b4b30ce7efa
This commit is contained in:
Yasufumi Ogawa
2025-02-07 22:49:50 +09:00
parent 29e0d5bf1f
commit 92e5e164a6
37 changed files with 17 additions and 474 deletions

View File

@@ -23,16 +23,11 @@ machines = Machines.new(vd_config["machines"])
# TODO(yasufum) Test libvirt's boxes can be deployed haven't been tested yet.
supported_boxes = {
"virtualbox" => {
"ubuntu" => ["bento/ubuntu-22.04", "generic/ubuntu2204"],
"centos" => ["bento/centos-stream-8", "centos/stream8"]
},
#"libvirt" => {
# "ubuntu" => ["bento/ubuntu-22.04", "generic/ubuntu2204"],
# "centos" => ["generic/centos9s", "generic/centos8s"]
#}
"ubuntu" => ["bento/ubuntu-24.04", "generic/ubuntu2404"]
}
}
lvm_boxes = ["bento/ubuntu-22.04"]
lvm_boxes = ["bento/ubuntu-24.04"]
Vagrant.configure("2") do |config|
@@ -108,11 +103,6 @@ Vagrant.configure("2") do |config|
useradd -s /bin/bash -d /opt/stack -m stack
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
# Permission of `stack` directory is 0700 on CentOS 8, but it cause an
# error in a sanity check for the permission while running devstack
# installatino.
chmod 755 /opt/stack
mkdir -p /opt/stack/.ssh
echo "#{ssh_pub_key}" >> /opt/stack/.ssh/authorized_keys
chown -R stack:stack /opt/stack/.ssh
@@ -129,32 +119,6 @@ Vagrant.configure("2") do |config|
lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
resize2fs /dev/ubuntu-vg/ubuntu-lv
SHELL
elsif supported_boxes["virtualbox"]["centos"].include?(machine.box)
# Use `parted` and `xfs_growfs` to expand disk space after resizing
# volume.
# NOTE: Decide partition number which is different on each box first.
if machine.box == "bento/centos-stream-8"
part_num = 2
elsif machine.box == "centos/stream8"
part_num = 1
end
# NOTE: It doesn't use `parted` with --script option but here doc for
# interactive mode. It's because `resizepart` of `parted` doesn't work
# in non-interactive mode for some bug.
server.vm.provision "shell", inline: <<-SHELL
parted /dev/sda ---pretend-input-tty <<EOF
resizepart
#{part_num}
Yes
100%
quit
EOF
SHELL
server.vm.provision "shell", inline: <<-SHELL
xfs_growfs /dev/sda#{part_num}
SHELL
end
VdUtils.setup_git_config

View File

@@ -1,11 +1,5 @@
[ubuntu-jammy.controller]
[ubuntu-noble.controller]
192.168.56.11
[ubuntu-jammy.compute]
[ubuntu-noble.compute]
#192.168.56.12
[centos-stream8.controller]
#192.168.56.15
[centos-stream8.compute]
#192.168.56.16

View File

@@ -7,7 +7,7 @@ class Machines < Array
:private_ips, :public_ips, :ssh_forward_x11, :fwd_port_list
def initialize(
hostname="controller", provider="virtualbox", box="bento/ubuntu-22.04",
hostname="controller", provider="virtualbox", box="bento/ubuntu-24.04",
nof_cpus=2, mem_size=4, disk_size=10,
private_ips=["192.168.56.11"], public_ips=nil, ssh_forward_x11=false,
fwd_port_list=nil)

View File

@@ -34,7 +34,7 @@ module VdUtils
dst = "#{target_dir}/templates/gitconfig.j2"
gitconfig = File.expand_path src
if File.exists? gitconfig
if File.exist? gitconfig
FileUtils.copy(gitconfig, dst)
end
end

View File

@@ -1,22 +0,0 @@
[[local|localrc]]
HOST_IP={{ ansible_host }}
FIXED_RANGE={{ fixed_range }}
FLOATING_RANGE={{ floating_range }}
LOGFILE=/opt/stack/logs/stack.sh.log
ADMIN_PASSWORD={{ admin_password }}
DATABASE_PASSWORD={{ database_password }}
RABBIT_PASSWORD={{ rabbit_password }}
SERVICE_PASSWORD={{ service_password }}
DATABASE_TYPE=mysql
SERVICE_HOST={{ service_host }}
MYSQL_HOST=$SERVICE_HOST
RABBIT_HOST=$SERVICE_HOST
GLANCE_HOSTPORT=$SERVICE_HOST:9292
ENABLED_SERVICES=n-cpu,q-agt,c-vol,placement-client
NOVA_VNC_ENABLED=True
NOVNCPROXY_URL="http://$SERVICE_HOST:6080/vnc_lite.html"
VNCSERVER_LISTEN=$HOST_IP
VNCSERVER_PROXYCLIENT_ADDRESS=$VNCSERVER_LISTEN

View File

@@ -1,14 +0,0 @@
---
- name: install basic packages
become: yes
yum: name={{ item }} update_cache=yes
with_items:
- python3
- python3-devel
- python3-pip
- git
- vim
- name: install git-review with pip
become: yes
pip: name=git-review

View File

@@ -1,22 +0,0 @@
---
- name: update git config
git_config:
scope: global
name: 'url.https://.insteadOf'
value: 'git://'
- name: git clone devstack
git:
repo=https://opendev.org/openstack/devstack.git
dest={{ ansible_env.HOME }}/devstack
- name: install os-testr
become: yes
pip:
name: os-testr
state: latest
- name: install tox
become: yes
pip:
name: tox

View File

@@ -1,6 +0,0 @@
---
- name: install extra packages
become: yes
yum: name={{ item }}
with_items:
- jq

View File

@@ -1,10 +0,0 @@
---
- name: put yum repo for k8s
become: yes
template: src=templates/kubernetes.repo.j2
dest=/etc/yum.repos.d/kubernetes.repo
mode=755
- name: install k8s
become: yes
dnf: name=kubeadm update_cache=yes

View File

@@ -1,21 +0,0 @@
---
- include_tasks: basic_pkgs.yml
- include_tasks: set_path_env.yml
- include_tasks: git_config.yml
- include_tasks: python3_specific_vers.yml
- include_tasks: vim_extra_plugins.yml
when: use_vim_extra_plugins == true
- include_tasks: kubernetes.yml
- include_tasks: ovn.yml
- include_tasks: devstack.yml
- include_tasks: setup_tacker.yml
when: use_tacker == true
- include_tasks: extra_tools.yml
when: use_extra_tools == true

View File

@@ -1,24 +0,0 @@
---
- name: install ovn via centos-openstack
become: yes
yum: name={{ item }} update_cache=yes
with_items:
- centos-release-openstack-victoria
- name: install ovn
become: yes
yum: name={{ item }} update_cache=yes
with_items:
- openvswitch
- openvswitch-ovn-common
- openvswitch-ovn-central
- openvswitch-ovn-host
- name: activate ovs and ovn
become: yes
systemd: enabled=yes state=started name={{ item }}
with_items:
- ovn-northd.service
- ovn-controller.service
- ovs-vswitchd.service
- ovsdb-server.service

View File

@@ -1,9 +0,0 @@
---
- name: install python3 other than default version
become: yes
yum: name={{ item }}
with_items:
- python38
- python38-devel
- python39
- python39-devel

View File

@@ -1,65 +0,0 @@
---
- name: git clone tacker
git:
repo=https://opendev.org/openstack/tacker.git
dest={{ ansible_env.HOME }}/tacker
- name: copy local.conf
shell: cp {{ ansible_env.HOME }}/tacker/devstack/{{ item }} \
{{ ansible_env.HOME }}/devstack/{{ item }}
with_items:
- local.conf.example
- local.conf.kubernetes
- name: update HOST_IP in devstack/local.conf.example
lineinfile:
path={{ ansible_env.HOME }}/devstack/{{ item }}
line='HOST_IP={{ ansible_host }}'
regexp='^HOST_IP=127\.0\.0\.1'
with_items:
- local.conf.example
- local.conf.kubernetes
- name: update other params in devstack/local.conf.example
lineinfile:
path={{ ansible_env.HOME }}/devstack/local.conf.example
line={{ item.line }}
regexp={{ item.regexp }}
with_items:
- line: 'ADMIN_PASSWORD={{ admin_password }}'
regexp: '^ADMIN_PASSWORD=devstack'
- line: 'MYSQL_PASSWORD={{ database_password }}'
regexp: '^MYSQL_PASSWORD=devstack'
- line: 'RABBIT_PASSWORD={{ rabbit_password }}'
regexp: '^RABBIT_PASSWORD=devstack'
- line: 'SERVICE_PASSWORD={{ service_password }}'
regexp: '^SERVICE_PASSWORD=\$ADMIN_PASSWORD'
- line: 'SERVICE_TOKEN={{ service_token }}'
regexp: '^SERVICE_TOKEN=devstack'
- name: update HOST_IP in devstack/local.conf.kubernetes
lineinfile:
path={{ ansible_env.HOME }}/devstack/local.conf.kubernetes
line='HOST_IP={{ service_host }}'
regexp='^HOST_IP=127\.0\.0\.1'
- name: update other params in devstack/local.conf.kubernetes
lineinfile:
path={{ ansible_env.HOME }}/devstack/local.conf.kubernetes
line={{ item.line }}
regexp={{ item.regexp }}
with_items:
- line: 'ADMIN_PASSWORD={{ admin_password }}'
regexp: '^ADMIN_PASSWORD=devstack'
- line: 'MYSQL_PASSWORD={{ database_password }}'
regexp: '^MYSQL_PASSWORD=devstack'
- line: 'RABBIT_PASSWORD={{ rabbit_password }}'
regexp: '^RABBIT_PASSWORD=devstack'
- line: 'SERVICE_PASSWORD={{ service_password }}'
regexp: '^SERVICE_PASSWORD=\$ADMIN_PASSWORD'
- line: 'SERVICE_TOKEN={{ service_token }}'
regexp: '^SERVICE_TOKEN=devstack'
- name: use local.conf.example as local.conf
shell: cp {{ ansible_env.HOME }}/devstack/local.conf.example \
{{ ansible_env.HOME }}/devstack/local.conf

View File

@@ -1,35 +0,0 @@
---
- name: create dir for plug.vim
file: path={{ ansible_env.HOME }}/.vim/autoload state=directory
- name: download plug.vim
get_url: url=https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
dest={{ ansible_env.HOME }}/.vim/autoload/plug.vim
- name: vimrc
template: src=templates/vimrc.j2 dest={{ ansible_env.HOME }}/.vimrc
mode=664
- name: install exuberant-ctags
become: yes
yum: name=ctags
- name: install npm
become: yes
yum: name=npm
- name: install bash-language-server
become: yes
npm:
name: bash-language-server
global: yes
# required for python-language-server
- name: install gcc-c++
become: yes
yum: name=gcc-c++
- name: install python-language-server
become: yes
pip:
name: python-language-server[all]

View File

@@ -1,7 +0,0 @@
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

View File

@@ -1,6 +0,0 @@
---
- include_tasks: basic_pkgs.yml
tags: basic_pkgs
- include_tasks: devstack.yml
tags: devstack

View File

@@ -1,4 +0,0 @@
---
- name: copy .gitconfig on host to VM
template: src=templates/gitconfig.j2 dest={{ ansible_env.HOME }}/.gitconfig
mode=664

View File

@@ -1,5 +0,0 @@
---
- name: set PATH for '.local/bin'
lineinfile:
line="export PATH=$HOME/.local/bin:$PATH:/sbin"
dest={{ ansible_env.HOME }}/.bashrc

View File

@@ -1,159 +0,0 @@
" Specify a directory for plugins
" - For Neovim: stdpath('data') . '/plugged'
" - Avoid using standard Vim directory names like 'plugin'
call plug#begin('~/.vim/plugged')
" Make sure you use single quotes
" Shorthand notation; fetches https://github.com/junegunn/vim-easy-align
Plug 'junegunn/vim-easy-align'
" Any valid git URL is allowed
Plug 'https://github.com/junegunn/vim-github-dashboard.git'
" Multiple Plug commands can be written in a single line using | separators
Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets'
" On-demand loading
Plug 'preservim/nerdtree', { 'on': 'NERDTreeToggle' }
Plug 'tpope/vim-fireplace', { 'for': 'clojure' }
" Using a non-master branch
Plug 'rdnetto/YCM-Generator', { 'branch': 'stable' }
" Using a tagged release; wildcard allowed (requires git 1.9.2 or above)
"Plug 'fatih/vim-go', { 'tag': '*' }
" Plugin options
"Plug 'nsf/gocode', { 'tag': 'v.20150303', 'rtp': 'vim' }
Plug 'nsf/gocode'
" Plugin outside ~/.vim/plugged with post-update hook
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
let g:fzf_command_prefix = 'Fzf'
" Unmanaged plugin (manually installed and updated)
"Plug '~/my-prototype-plugin'
Plug 'tpope/vim-sensible'
Plug 'tpope/vim-surround'
Plug 'tpope/vim-fugitive'
Plug 'thinca/vim-quickrun'
Plug 'ctrlpvim/ctrlp.vim'
Plug 'flazz/vim-colorschemes'
Plug 'thinca/vim-quickrun'
Plug 'jpo/vim-railscasts-theme'
Plug 'godlygeek/tabular'
Plug 'plasticboy/vim-markdown'
let g:vim_markdown_folding_disabled = 1
Plug 'dense-analysis/ale'
Plug 'vim-scripts/taglist.vim'
let Tlist_Use_Right_Window = 1
Plug 'prabirshrestha/async.vim'
Plug 'prabirshrestha/vim-lsp'
Plug 'prabirshrestha/asyncomplete.vim'
Plug 'prabirshrestha/asyncomplete-lsp.vim'
Plug 'natebosch/vim-lsc'
Plug 'thomasfaingnaert/vim-lsp-snippets'
Plug 'thomasfaingnaert/vim-lsp-ultisnips'
let g:lsp_async_completion = 1
Plug 'tyru/current-func-info.vim'
Plug 'yasufum/vim-os-unittestr'
" Initialize plugin system
call plug#end()
syntax on
set number
set relativenumber
set shiftwidth=4
set tabstop=4
set expandtab
set showcmd
set showmatch
set hlsearch
set laststatus=2
set encoding=utf-8
set fileencoding=utf-8
set termencoding=utf-8
set autoindent
set scrolloff=4
set smartcase
set textwidth=80
set colorcolumn=+1
set visualbell t_vb=
set noerrorbells
set path+=**
set wildmenu
colorscheme delek
"colorscheme railscasts
autocmd FileType python set textwidth=79
autocmd FileType gitcommit set textwidth=72
nnoremap ; <CR>
nnoremap <C-n> :NERDTreeToggle<CR>
" enable line numbers
let NERDTreeShowLineNumbers=1
" make sure relative line number is used
autocmd FileType nerdtree setlocal relativenumber
""" Open vimrc from ':Conf' command.
function! s:open_vimrc() abort
new ~/.vimrc
endfunction
command! Conf call s:open_vimrc()
function! s:configure_lsp() abort
setlocal omnifunc=lsp#complete
nnoremap <buffer> <C-]> :<C-u>LspDefinition<CR>
nnoremap <buffer> <C-h> :<C-u>LspHover<CR>
"nnoremap <buffer> <C-@> <C-t>
nnoremap <buffer> <C-l>d :<C-u>LspDefinition<CR>
nnoremap <buffer> <C-l>r :<C-u>LspReferences<CR>
nnoremap <buffer> <C-l>t :<C-u>LspTypeDefinition<CR>
nnoremap <buffer> <C-l>s :<C-u>LspDocumentSymbol<CR>
nnoremap <buffer> <C-l>S :<C-u>LspWorkspaceSymbol<CR>
nnoremap <buffer> <C-l>f :<C-u>LspDocumentFormat<CR>
vnoremap <buffer> <C-l>f :<C-u>LspDocumentRangeFormat<CR>
nnoremap <buffer> <C-l>h :<C-u>LspHover<CR>
nnoremap <buffer> <C-l>i :<C-u>LspImplementation<CR>
nnoremap <buffer> <C-l>e :<C-u>LspNextError<CR>
nnoremap <buffer> <C-l>E :<C-u>LspPreviousError<CR>
nnoremap <buffer> <C-l>N :<C-u>LspRename<CR>
endfunction
" Do ALE diagnostic
let g:lsp_diagnostics_enabled = 0
if executable('pyls')
autocmd User lsp_setup call lsp#register_server({
\ 'name': 'pyls',
\ 'cmd': { server_info -> ['pyls'] },
\ 'whitelist': ['python'],
\ 'workspace_config': {'pyls': {'plugins': {
\ 'pycodestyle': {'enabled': v:false},
\ 'jedi_definition': {'follow_imports': v:true, 'follow_builtin_imports': v:true},}}}
\})
"autocmd BufWritePre *.py LspDocumentFormatSync
autocmd FileType python call s:configure_lsp()
endif
if executable('bash-language-server')
au User lsp_setup call lsp#register_server({
\ 'name': 'bash-language-server',
\ 'cmd': {server_info->[&shell, &shellcmdflag, 'bash-language-server start']},
\ 'whitelist': ['sh'],
\ })
"autocmd BufWritePre *.sh LspDocumentFormatSync
autocmd FileType sh call s:configure_lsp()
endif

View File

@@ -6,6 +6,7 @@
- python3
- python3-dev
- python3-pip
- pipx
- name: install git tools
become: yes

View File

@@ -11,8 +11,7 @@
dest={{ ansible_env.HOME }}/devstack
- name: install required packages for openstack
become: yes
pip: name={{ item }}
community.general.pipx: name={{ item }}
with_items:
- os-testr
- tox

View File

@@ -2,13 +2,13 @@
- name: install neovim
become: yes
unarchive:
src=https://github.com/neovim/neovim/releases/download/stable/nvim-linux64.tar.gz
src=https://github.com/neovim/neovim/releases/download/stable/nvim-linux-x86_64.tar.gz
dest=/usr/local
remote_src=yes
- name: set PATH for '.local/bin'
lineinfile:
line="export PATH=/usr/local/nvim-linux64/bin:$PATH"
line="export PATH=/usr/local/nvim-linux-x86_64/bin:$PATH"
dest={{ ansible_env.HOME }}/.bashrc
- name: install latest nodejs for nvim coc

View File

@@ -1,18 +1,12 @@
---
- name: ubuntu-jammy controller node
hosts: ubuntu-jammy.controller
- name: ubuntu-noble controller node
hosts: ubuntu-noble.controller
remote_user: stack
roles:
- ubuntu-jammy/controller
- ubuntu-noble/controller
- name: ubuntu-jammy compute nodes
hosts: ubuntu-jammy.compute
- name: ubuntu-noble compute nodes
hosts: ubuntu-noble.compute
remote_user: stack
roles:
- ubuntu-jammy/compute
- name: centos-stream8 controller node
hosts: centos-stream8.controller
remote_user: stack
roles:
- centos-stream8/controller
- ubuntu-noble/compute