From 5c20d34fa760595e7065eb0bb750d706a3398d1b Mon Sep 17 00:00:00 2001 From: Yasufumi Ogawa Date: Sun, 2 Apr 2023 09:07:29 +0900 Subject: [PATCH] Add neovim support in tacker installer Introduce neovim [1], an enhanced vim, instead of vim because of easy installation and better performance. [1] https://neovim.io/ Signed-off-by: Yasufumi Ogawa Change-Id: Idfd42f1433c9a715ba0190838a557335e19533f4 --- vagrant/devstack/README.md | 9 ++++++++ vagrant/devstack/group_vars/all.yml | 7 ++++-- .../controller/tasks/basic_pkgs.yml | 14 ++++++++++-- .../ubuntu-focal/controller/tasks/main.yml | 3 +++ .../ubuntu-focal/controller/tasks/neovim.yml | 22 +++++++++++++++++++ .../controller/tasks/basic_pkgs.yml | 14 ++++++++++-- .../ubuntu-jammy/controller/tasks/main.yml | 3 +++ .../ubuntu-jammy/controller/tasks/neovim.yml | 22 +++++++++++++++++++ 8 files changed, 88 insertions(+), 6 deletions(-) create mode 100644 vagrant/devstack/roles/ubuntu-focal/controller/tasks/neovim.yml create mode 100644 vagrant/devstack/roles/ubuntu-jammy/controller/tasks/neovim.yml diff --git a/vagrant/devstack/README.md b/vagrant/devstack/README.md index ba0142644..c432cf1f2 100644 --- a/vagrant/devstack/README.md +++ b/vagrant/devstack/README.md @@ -100,3 +100,12 @@ $ ./stack.sh See instruction how to configure `local.conf` described in [DevStack Quick Start](https://docs.openstack.org/devstack/latest/). + +### Editor support + +Although you can use any editors on the setup VM, it provides `vim` and +`neovim` with minimal configurations for LSP. +You can choose the editor by configuring parameters related vim +in `group_vars/all.yml`, so turn it `false` if you don't use the +support. + diff --git a/vagrant/devstack/group_vars/all.yml b/vagrant/devstack/group_vars/all.yml index 36e2066a5..91f182308 100644 --- a/vagrant/devstack/group_vars/all.yml +++ b/vagrant/devstack/group_vars/all.yml @@ -16,10 +16,13 @@ fixed_range: 10.4.128.0/20 # 2. Configure optional tools on controller node +# Use the latest stable Neovim. +use_neovim: true + # Use the latest vim on `ppa:jonathonf/vim`, and use plugins with # vim-plug. -use_vim_latest: true -use_vim_extra_plugins: true +use_vim_latest: false +use_vim_extra_plugins: false # Clone tacker in addition to devstack. use_tacker: true diff --git a/vagrant/devstack/roles/ubuntu-focal/controller/tasks/basic_pkgs.yml b/vagrant/devstack/roles/ubuntu-focal/controller/tasks/basic_pkgs.yml index 519a34296..93259033c 100644 --- a/vagrant/devstack/roles/ubuntu-focal/controller/tasks/basic_pkgs.yml +++ b/vagrant/devstack/roles/ubuntu-focal/controller/tasks/basic_pkgs.yml @@ -1,15 +1,25 @@ --- -- name: install basic packages +- name: install python and libs become: yes apt: name={{ item }} update_cache=yes with_items: - python3 - python3-dev - python3-pip - - bridge-utils + +- name: install git tools + become: yes + apt: name={{ item }} + with_items: - git - git-review +- name: install networking tools + become: yes + apt: name={{ item }} + with_items: + - bridge-utils + - name: upgrade apt packages become: yes apt: diff --git a/vagrant/devstack/roles/ubuntu-focal/controller/tasks/main.yml b/vagrant/devstack/roles/ubuntu-focal/controller/tasks/main.yml index d3830ad59..ee0a5c659 100644 --- a/vagrant/devstack/roles/ubuntu-focal/controller/tasks/main.yml +++ b/vagrant/devstack/roles/ubuntu-focal/controller/tasks/main.yml @@ -14,6 +14,9 @@ - include: vim_extra_plugins.yml when: use_vim_extra_plugins == true +- include: neovim.yml + when: use_neovim == true + - include: devstack.yml - include: setup_tacker.yml diff --git a/vagrant/devstack/roles/ubuntu-focal/controller/tasks/neovim.yml b/vagrant/devstack/roles/ubuntu-focal/controller/tasks/neovim.yml new file mode 100644 index 000000000..4ce9f4cea --- /dev/null +++ b/vagrant/devstack/roles/ubuntu-focal/controller/tasks/neovim.yml @@ -0,0 +1,22 @@ +--- +- name: install neovim + become: yes + unarchive: + src=https://github.com/neovim/neovim/releases/download/stable/nvim-linux64.tar.gz + dest=/usr/local + remote_src=yes + +- name: set PATH for '.local/bin' + lineinfile: + line="export PATH=/usr/local/nvim-linux64/bin:$PATH" + dest={{ ansible_env.HOME }}/.bashrc + +- name: install latest nodejs for nvim coc + become: yes + shell: curl -sL install-node.vercel.app | sudo bash -s -- --yes + +- name: install latest yarn for nvim coc + become: yes + npm: + name: yarn + global: yes diff --git a/vagrant/devstack/roles/ubuntu-jammy/controller/tasks/basic_pkgs.yml b/vagrant/devstack/roles/ubuntu-jammy/controller/tasks/basic_pkgs.yml index 519a34296..93259033c 100644 --- a/vagrant/devstack/roles/ubuntu-jammy/controller/tasks/basic_pkgs.yml +++ b/vagrant/devstack/roles/ubuntu-jammy/controller/tasks/basic_pkgs.yml @@ -1,15 +1,25 @@ --- -- name: install basic packages +- name: install python and libs become: yes apt: name={{ item }} update_cache=yes with_items: - python3 - python3-dev - python3-pip - - bridge-utils + +- name: install git tools + become: yes + apt: name={{ item }} + with_items: - git - git-review +- name: install networking tools + become: yes + apt: name={{ item }} + with_items: + - bridge-utils + - name: upgrade apt packages become: yes apt: diff --git a/vagrant/devstack/roles/ubuntu-jammy/controller/tasks/main.yml b/vagrant/devstack/roles/ubuntu-jammy/controller/tasks/main.yml index d3830ad59..ee0a5c659 100644 --- a/vagrant/devstack/roles/ubuntu-jammy/controller/tasks/main.yml +++ b/vagrant/devstack/roles/ubuntu-jammy/controller/tasks/main.yml @@ -14,6 +14,9 @@ - include: vim_extra_plugins.yml when: use_vim_extra_plugins == true +- include: neovim.yml + when: use_neovim == true + - include: devstack.yml - include: setup_tacker.yml diff --git a/vagrant/devstack/roles/ubuntu-jammy/controller/tasks/neovim.yml b/vagrant/devstack/roles/ubuntu-jammy/controller/tasks/neovim.yml new file mode 100644 index 000000000..4ce9f4cea --- /dev/null +++ b/vagrant/devstack/roles/ubuntu-jammy/controller/tasks/neovim.yml @@ -0,0 +1,22 @@ +--- +- name: install neovim + become: yes + unarchive: + src=https://github.com/neovim/neovim/releases/download/stable/nvim-linux64.tar.gz + dest=/usr/local + remote_src=yes + +- name: set PATH for '.local/bin' + lineinfile: + line="export PATH=/usr/local/nvim-linux64/bin:$PATH" + dest={{ ansible_env.HOME }}/.bashrc + +- name: install latest nodejs for nvim coc + become: yes + shell: curl -sL install-node.vercel.app | sudo bash -s -- --yes + +- name: install latest yarn for nvim coc + become: yes + npm: + name: yarn + global: yes