지금까지 Ansible에서vim-bootstrap을 기반으로 한 설정 관리의 자제 역할을 소개했다

7353 단어 VimAnsibletech
큐타가 주최Ansible Advent Calendar 2021한 지 16일째다.
나는 리눅스를 로컬 개발의 가벼운 작업의 기초로 하고 Ansible를 초기 설치용 IaC로 사용한다.
단순 플레이북뿐만 아니라 dotfiles 등'어떤 환경에서도 대체적으로 사용한다'는 내용을 총결산GiitHub에서 관리했다.[1]
그럼 바탕 편집인 비주얼스튜디오코드·빔·네오빔[2]은 규모감과 환경에 맞게 제작된다.
이제 빔을 사용할 때는'마음껏 맞춤형'이라기보다는'편해 보이는 플러그인만 설정한다'고 했다.
이에 따라 꼼꼼히 고려하지 않아도 편리하게 사용할 수 있도록 사용Vim Bootstrap했다.
이를 바탕으로 3년 전 안사이블 갤럭시에서 vim_bootstrap라는 캐릭터를 공개했다.
https://github.com/attakei/ansible-vim-bootstrap/
이 캐릭터는 올해 이미 수정되었는데, 현재 실복에서 무엇을 하고 있는지 간단하게 정리하고 설명해 드리겠습니다.

Vim Bootstrap의 파일 생성 메커니즘


웹 사이트의 Vim Bootstrap으로서 다음 절차에 따라 파일을 생성합니다.
  • 프로그래밍 언어 선택(다중 선택 가능)
  • 프레임 선택(여러 개 가능)
  • 색상 테마 선택
  • Vim or NeoVim
  • 선택
  • Generate! 버튼
  • 을 누릅니다.
    여기서 마지막에 등장하는 버튼이 무엇을 하고 있는지 말하자면 단순히'선택한 설정 내용을 형식으로 POST 요청을 한다'는 것이다.[4]
    따라서 권상에서는 다음과 같은 행위를 통해 이루어진다.
  • default/main.yml를 초기 값으로 사용자에게 설정 내용을 정의합니다.
  • uri 모듈에서 POST 요청을 수행하고 내용을 유지합니다.
  • copy 모듈에서 파일을 출력합니다.
  • tasks/main.yml
    - name: Fetch new vimrc
      uri:
        url: https://vim-bootstrap.com/generate.vim
        method: POST
        body: '{{ lookup("vim_bootstrap_post", vim_langs, vim_frameworks, vim_theme, vim_command)|urlencode }}'
        return_content: yes
      register: vim_bootstrap_resp
    - name: Write out vimrc
      copy:
        dest: '{{ vim_config_path }}'
        content: '{{ vim_bootstrap_resp.content }}'
        backup: yes
    -
    
    그러나 Ansible의 변수에서 표를 생성하는 데 사용되는 검색 주체는 Jinja 템플릿에서 비교적 번거로울 수 있습니다
    볼륨 내에서 자체 제작된 Plugin.

    사용자별 설정 관리


    Vism Bootstrap을 사용하면 사용자가 직접 설정을 추가하거나 플러그인을 추가할 수도 있습니다.[5]
    이 파일들은 당연히 Ansible를 사용하지 않고 혼자 관리해도 상관없지만 같은 설정은 어떤 환경에서도 사용하고 싶다.
    그럼에도 불구하고 template 모듈이라면 내용을 편집할 여지가 없고'사용자로서 공통되게 하고 싶지만 단말기 의존으로 바꾸고 싶다'는 설정의 배치 장소가 번거롭다.[6]
    생각할 수 있는 대응 방법으로는 두 가지가 있는데 이번에는 후자를 택했다.
  • template 모듈을 사용하는 동시에 생성된 파일을 포함한다.
  • blockinfile 모듈을 사용하여 Ansible에서 특정 영역만 터치합니다.
  • tasks/main.yml
    - name: Write custom plugins
      blockinfile:
        path: '{{ vim_localbundles_path }}'
        create: yes
        backup: '{{ vim_bootstrap_backup }}'
        marker: '" {mark} Generated by attakei.vim_bootstrap'
        block: |
          {% for plugin in vim_additional_plugins -%}
          Plug '{{ plugin }}'
          {% endfor %}
      when: 'vim_additional_plugins|length > 0'
    
    이것은 플러그인 파일의 일부 발췌문이다.
    "Ansible의 편집", "사용자의 편집"은 편집blockinfile으로 출력된 기호의 범위를 벗어나 표시되지 않습니다.

    잡담


    각종 필요한 업데이트가 완료되어 현재 비교적 안정된 상태에 있다.
    그럼에도 불구하고 언어에 대한 설정은 최근 Vim의 5인 LSP 플러그인을 가져오기 시작했기 때문에 전혀 지정되지 않았다.[7]
    이 때문에 Vim Bootstrap으로서의 필요성이 점차 얇아지고 있다는 점은 부인할 수 없다.
    언젠가 빔부트스트랩에 불만이 생길 수도 있어 그건 미래의 일이야.
    각주
    유지 보수 빈도가 높지 않으면 눈을 크게 뜨게 할 수 있다.↩︎
    NeoVim은 Vim에 "빠르게 시작하는 새로운 Vim"대신 플러그인을 추가했습니다.[3] ↩︎
    vim --clean 사용하지 않을 이유가 없다.↩︎
    디보툴 등에서 확인할 수 있다.↩︎
    Vim에 대한 설정에서는 독립형 플러그 인~/.vimrc.local.bundles의 설정~/.vimrc.local을 참조할 수 있습니다.↩︎
    화면 폭과 관련된 것도 터미널의 사이즈에 영향을 줄 수 있기 때문에'표준 설정 유니버설','개별 설정으로 덮어쓰기'가 좋다.↩︎
    prabirshrestha/async.vim , prabirshrestha/vim-lsp , prabirshrestha/asyncomplete.vim , prabirshrestha/asyncomplete-lsp.vim , mattn/vim-lsp-settings` ↩︎

    좋은 웹페이지 즐겨찾기