jonaspammer.bootstrap
以äžã¯ãæå®ãããããã¹ãã®æ¥æ¬èªèš³ã§ãã
ãã®ãã¡ã€ã«ã¯ .github/workflows/gh-pages.yml ã«ãã£ãŠçæãããŠããŸã - ãã¹ãŠã®ããŒã«ã«å€æŽã¯æçµçã«å€±ãããŸã! = ansible-role-bootstrap Jonas Pammer opensource@jonaspammer.at; :toc: left :toclevels: 2 :toc-placement!: :source-highlighter: rouge
https://galaxy.ansible.com/jonaspammer/bootstrap[image:https://img.shields.io/badge/available%20on%20ansible%20galaxy-jonaspammer.bootstrap-brightgreen[Galaxyã®ããŒãžã§ã³]] // ãšãŠãé¢é£æ§ã®ããã¹ããŒã¿ã¹ãããž https://github.com/JonasPammer/ansible-role-bootstrap/actions/workflows/ci.yml[image:https://github.com/JonasPammer/ansible-role-bootstrap/actions/workflows/ci.yml/badge.svg[CIãã¹ã]]
Ansibleã§ç®¡çãããLinuxã·ã¹ãã ãæºåããããã®AnsibleããŒã«ã§ãã
ãã®ããŒã«ã¯ãhttps://docs.ansible.com/ansible-core/2.16/collections/ansible/builtin/raw_module.html[`ansible.builtin.raw`ã¢ãžã¥ãŒã«]ã䜿çšããç¬èªã«å®è£
ããããªãã¬ãŒãã£ã³ã°ã·ã¹ãã å€å¥ã·ã¹ãã ããšçµã¿åãããŠãAnsibleãã·ã¹ãã ã管çã§ããããã«ãæå°éå¿
èŠãªããã±ãŒãžïŒ`python` ãš sudo
ïŒãã€ã³ã¹ããŒã«ããŸãã
ãã®ããŒã«ã¯ãã»ãšãã©ã®ã·ã¹ãã ã«å¯ŸããŠææ°ã®ããã±ãŒãžãã£ãã·ã¥ã確ä¿ããŸãã
ã»ãšãã©ã®å Žåããã®ããŒã«ã¯ç§ã® https://github.com/JonasPammer/ansible-role-core_dependencies[`core_dependencies`ããŒã«]ãšçµã¿åãããŠäœ¿çšããããšããå§ãããŸãã
[泚] .DISCLAIMER ===== ãã®ããŒã«ã¯ https://github.com/robertdebock/ansible-role-bootstrap/releases/tag/5.2.12[robertdebock/ansible-role-bootstrap v5.2.12 (2022幎1æ27æ¥)]ã®ãã©ãŒã¯ã§ãããããŸããŸãªå€æŽãä¿®æ£ãå ããããŠããŸãã+ 以äžã« https://github.com/JonasPammer/ansible-role-bootstrap/releases[/releases]ããã®å€æŽã®æç²ã瀺ããŸãïŒrobertdebockã®ãªããžããªã®é¢é£ããIssuesãå«ãïŒïŒ
- ããŒã«èªäœãããã±ãŒãžãããŒãžã£ãã£ãã·ã¥ãäºç±ããå¿ èŠããããŸãïŒ https://github.com/robertdebock/ansible-role-bootstrap/pull/57[robertdebock/ansible-role-bootstrap#57] ïŒä¿®æ£ãããŸããïŒ https://github.com/JonasPammer/ansible-role-bootstrap/pull/43[JonasPammer#43]ïŒ https://github.com/JonasPammer/ansible-role-bootstrap/pull/50[JonasPammer#50]ïŒ
become
ã®ããã©ã«ããfalse
ã«å€æŽããansible_user
ãšã¯å¥ã«become_user
ãå®çŸ©ããèœåã远å ïŒ https://github.com/robertdebock/ansible-role-bootstrap/issues/63[robertdebock/ansible-role-bootstrap#63] ïŒä¿®æ£ãããŸããïŒ https://github.com/JonasPammer/ansible-role-bootstrap/pull/61[JonasPammer#61]ïŒbootstrap_become_user
ã®ããã©ã«ããrootã«å€æŽ- Ansibleã¢ãžã¥ãŒã«ã®ã¹ãããã§ã
bootstrap_become_user
ãäœ¿çš - podmanãšã®äºææ§ãæãããããã«
/bin/sh
ãæå® https://github.com/robertdebock/ansible-role-bootstrap/pull/66[robertdebock/ansible-role-bootstrap#66] ïŒä¿®æ£ãããŸããïŒhttps://github.com/JonasPammer/ansible-role-bootstrap/pull/62[JonasPammer#62]ïŒ
toc::[]
[[meta]] == ð ã¡ã¿ããŒã¿ ããã§ã¯ãæ¬¡ã®æ å ±ãèŠã€ããããšãã§ããŸãâŠ
- ããŒã«ã«å¿ èŠãªAnsibleã®ããŒãžã§ã³
- ããŒã«ããµããŒããããã©ãããã©ãŒã
- ããŒã«ã® https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html#role-dependencies[ããŒã«ã®äŸåé¢ä¿]
.link:meta/main.yml[] [source,yaml]
galaxy_info: role_name: bootstrap description: Ansibleã§ç®¡çãããLinuxã·ã¹ãã ãæºåããããã®AnsibleããŒã«ãrobertdebockã®ããŒã«ã«åºã¥ããŠããŸãã
author: jonaspammer license: "MIT"
min_ansible_version: "2.9" platforms: - name: EL # (ãšã³ã¿ãŒãã©ã€ãºLinux) versions: - "9" # ã¢ã¯ãã£ããã¹ã: rockylinux9 - name: Fedora versions: - "38" # ã¢ã¯ãã£ããã¹ã: fedora38 - "39" # ã¢ã¯ãã£ããã¹ã: fedora39 - name: Debian versions: - bullseye # ã¢ã¯ãã£ããã¹ã: debian11 - bookworm # ã¢ã¯ãã£ããã¹ã: debian12 - name: Ubuntu versions: - focal # ã¢ã¯ãã£ããã¹ã: ubuntu2004 - jammy # ã¢ã¯ãã£ããã¹ã: ubuntu2204
galaxy_tags: - bootstrap - python - sudo
dependencies: []
[[requirements]]
== ð èŠä»¶
// ãã®ããŒã«ãŸãã¯Ansibleèªäœã§ã¯ã«ããŒãããŠããªãèŠä»¶ãããã°ãããã«èšèŒããŠãã ããã
AnsibleãŠãŒã¶ãŒã¯become
ã§ããå¿
èŠããããŸãã
[[variables]] == ð ããŒã«å€æ° // ãã®ããŒã«ã®èšå®å¯èœãªå€æ°ã®èª¬æãããã«èšèŒããŠãã ããã // 圹å²ã«ãã©ã¡ãŒã¿ãŒã§èšå®ã§ãã倿°ã // ä»ã®ããŒã«ãã°ããŒãã«ã¹ã³ãŒãïŒäŸïŒhostvarsãgroup varsãªã©ïŒããèªã¿åããã倿°ãããã«èšèŒããå¿ èŠããããŸãã
[source,yaml]
bootstrap_user: root
https://docs.ansible.com/ansible/latest/reference_appendices/special_variables.html#term-ansible_user[ãŠãŒã¶ãŒå]
äž»ãªraw
ã¿ã¹ã¯ã®ããã«ãã·ã³ã«æ¥ç¶ããããã«äœ¿çšããŸãã_ç°¡åãªäºå®ãåéãããã/_ã€ã³ã¹ããŒã«ããããã
[source,yaml]
bootstrap_become: false bootstrap_become_user: root
become
ããã³become_user
倿°ã¯ãã»ãšãã©ã®å®éã®ã¿ã¹ã¯ã«æž¡ãããŸãã
bootstrap_become
ã®ããã©ã«ãå€ã¯false
ã«èšå®ãããŸããã
ããã¯ãããŒãã¹ãã©ããåã¯sudo
ãå©çšã§ããªããšããä»®å®ããæ¥ãŠããŸãã
[source,yaml]
bootstrap_wait_for_host: false
ansible_port
ïŒ22ïŒã§ãã¹ããå©çšå¯èœã«ãªããŸã§åŸ
æ©ãããã©ããã
[source,yaml]
bootstrap_timeout: 3
ãªã¢ãŒãã·ã¹ãã ãå°éå¯èœãŸãã¯äœ¿çšå¯èœã«ãªããŸã§æå€§äœç§åŸ ã€ããèšå®ããŸãã
[[public_vars]] == ð ãã®ããŒã«ã«ãã£ãŠå®çŸ©ãããäºå®/倿°
ãã®ã»ã¯ã·ã§ã³ã«ãªã¹ããããå倿°ã¯ããã®ããŒã«ãå®è¡ããéã«åçã«å®çŸ©ããïŒansible.builtin.set_facts
ã䜿çšããŠã®ã¿äžæžãå¯èœïŒã
å
éšçã«ã ãã§ãªããä»ã§äœ¿çšãããããšãæå³ããŠããŸãã
[[tags]] == ð·ïž ã¿ã°
// ã¿ã¹ã¯ãã¿ã°ã§ã°ã«ãŒãåããçŽ æŽãããäŸã«ã€ããŠã¯ãhttps://github.com/tribe29/ansible-collection-tribe29.checkmk/blob/main/roles/server/README.md#tagsããã§ãã¯ããŠãã ãã
ã¿ã¹ã¯ã«ã¯ä»¥äžã® https://docs.ansible.com/ansible/latest/user_guide/playbooks_tags.html#adding-tags-to-roles[ã¿ã°]ãä»ããããŸãïŒ
[cols="1,1"] |=== |ã¿ã° | ç®ç
2+| ãã®ããŒã«ã«ã¯å ¬åŒã«ææžåãããã¿ã°ã¯ãŸã ãããŸããã |===
Ansibleã䜿ã£ãŠã¿ã¹ã¯ãã¹ãããããããç¹å®ã®ã¿ã¹ã¯ã ããå®è¡ãããããããã«ãããã®ã¿ã°ã䜿çšã§ããŸããããã©ã«ãã§ã¯ãã¿ã°ãæå®ãããŠããªãå Žåããã¹ãŠã®ã¿ã¹ã¯ãå®è¡ãããŸãã
[[dependencies]] == ð« äŸåé¢ä¿ // ããã«ã¯ä»ã®ããŒã«ã®ãªã¹ããšãä»ã®ããŒã«ã«èšå®ããå¿ èŠããããã©ã¡ãŒã¿ã«é¢ãã詳现ã // ãŸãã¯ä»ã®ããŒã«ãã䜿çšããã倿°ãèšèŒããå¿ èŠããããŸãã
[[example_playbooks]] == ð ãµã³ãã«ãã¬ã€ããã¯ã®äœ¿çšæ³ // ãã®ããŒã«ããã¬ã€ããã¯ã§äœ¿çšããäžè¬çãªã·ããªãªã®äŸãå«ããããšã¯ããŠãŒã¶ãŒã«ãšã£ãŠåžžã«è¯ãã§ãïŒ
[éèŠ]
ãã®ããŒã«ã䜿çšããããã¬ã€ããã¯ã®gather_facts
ããããã£ãç¡å¹ã«ããå¿
èŠããããŸãã
ãã®ããŒã«ãæåè£ã«å®äºãããšãhttps://docs.ansible.com/ansible/latest/collections/ansible/builtin/setup_module.html[
Ansibleã®ã»ããã¢ããã¢ãžã¥ãŒã«]ãèªåçã«åŒã³åºãããŸãïŒgather_facts: true
ãšåã广ããããŸãïŒã
ãã®ããŒã«ã®åã«ã¿ã¹ã¯ãé 眮ããŠã¯ãããŸããã
.æå°éã®åèµ·å
[source,yaml]
hosts: servers:&provisioned name: Ansibleã«ãã£ãŠç®¡çãããLinuxãã·ã³ãããŒãã¹ãã©ããããŸãã become: false gather_facts: false
roles:
- role: jonaspammer.bootstrap
====
.ããŒãã¹ãã©ãããŠãŒã¶ãŒã®å€æŽïŒäŸïŒrootããªãã·ã§ã³ã§ãªãå ŽåïŒ
[source,yaml]
hosts: servers:&provisioned name: Ansibleã«ãã£ãŠç®¡çãããLinuxãã·ã³ãããŒãã¹ãã©ããããŸãã become: false gather_facts: false
vars: bootstrap_user: "{{ ansible_user }}"
roles:
- role: jonaspammer.bootstrap
====
.䜿çšå¯èœãªsudoãæã€å Žåã®become trueã®äœ¿çšïŒäŸïŒãã§ã«å°ãªããšã䜿ããsudoãããããšãããã£ãŠããå ŽåïŒ
[source,yaml]
hosts: servers:&provisioned name: Ansibleã«ãã£ãŠç®¡çãããLinuxãã·ã³ãããŒãã¹ãã©ããããŸãã become: true gather_facts: false
vars: bootstrap_user: "{{ ansible_user }}" bootstrap_become: true
roles:
- role: jonaspammer.bootstrap
====
[[tested-distributions]] == 𧪠ãã¹ãããããã£ã¹ããªãã¥ãŒã·ã§ã³
ãã®ããŒã«ã¯Red Hat Enterprise LinuxïŒRHELïŒã®ãããªããŸããŸãªãã£ã¹ããªãã¥ãŒã·ã§ã³ã§åäœããå¯èœæ§ããããŸããã ãã®æ£ç¢ºãªãã£ã¹ããªãã¥ãŒã·ã§ã³ã«ã€ããŠã¯ãã¹ããããŠããŸããã
|=== | OSãã¡ããªãŒ | ãã£ã¹ããªãã¥ãŒã·ã§ã³ | ãã£ã¹ããªãã¥ãŒã·ã§ã³ã®ãªãªãŒã¹æ¥ | ãã£ã¹ããªãã¥ãŒã·ã§ã³ã®ãµããŒãçµäºæ¥ | 䌎ãDockerã€ã¡ãŒãž
| Rocky | Rocky Linux 8 (https://www.howtogeek.com/devops/is-rocky-linux-the-new-centos/[RHEL/CentOS 8ã®å€è£ ]) | 2021-06 | 2029-05 | https://github.com/geerlingguy/docker-rockylinux8-ansible/actions?query=workflow%3ABuild[image:https://github.com/geerlingguy/docker-rockylinux8-ansible/workflows/Build/badge.svg?branch=master[CI]]
| Rocky | Rocky Linux 9 | 2022-07 | 2032-05 | https://github.com/geerlingguy/docker-rockylinux9-ansible/actions?query=workflow%3ABuild[image:https://github.com/geerlingguy/docker-rockylinux9-ansible/workflows/Build/badge.svg?branch=master[CI]]
| RedHat | Fedora 39 | 2023-11 | 2024-12 | https://github.com/geerlingguy/docker-fedora39-ansible/actions?query=workflow%3ABuild[image:https://github.com/geerlingguy/docker-fedora39-ansible/workflows/Build/badge.svg?branch=master[CI]]
| Debian | Ubuntu 20.04 LTS | 2021-04 | 2025-04 | https://github.com/geerlingguy/docker-ubuntu2004-ansible/actions?query=workflow%3ABuild[image:https://github.com/geerlingguy/docker-ubuntu2004-ansible/workflows/Build/badge.svg?branch=master[CI]]
| Debian | Ubuntu 22.04 LTS | 2022-04 | 2027-04 | https://github.com/geerlingguy/docker-ubuntu2204-ansible/actions?query=workflow%3ABuild[image:https://github.com/geerlingguy/docker-ubuntu2204-ansible/workflows/Build/badge.svg?branch=master[CI]]
| Debian | Debian 11 | 2021-08 | 2024-06 (2026-06 LTS) | https://github.com/geerlingguy/docker-debian11-ansible/actions?query=workflow%3ABuild[image:https://github.com/geerlingguy/docker-debian11-ansible/workflows/Build/badge.svg?branch=master[CI]]
| Debian | Debian 12 | 2023-06 | 2026-06 (2028-06 LTS) | https://github.com/geerlingguy/docker-debian12-ansible/actions?query=workflow%3ABuild[image:https://github.com/geerlingguy/docker-debian12-ansible/workflows/Build/badge.svg?branch=master[CI]] |===
[[tested-ansible-versions]] == 𧪠ãã¹ããããAnsibleã®ããŒãžã§ã³
ãã¹ããããansibleããŒãžã§ã³ã¯ãhttps://github.com/ansible-collections/community.general#tested-with-ansible[
Ansibleã®community.general
ã³ã¬ã¯ã·ã§ã³ã®ãµããŒããã¿ãŒã³]ãšåçã§ããããã«ä¿ãããŸããå·çæç¹ã§ã¯ä»¥äžã®éãã§ãïŒ
- 2.13ïŒAnsible 6ïŒ
- 2.14ïŒAnsible 7ïŒ
- 2.15ïŒAnsible 8ïŒ
- 2.16ïŒAnsible 9ïŒ
[[development]] == ð éçº // ãã®ãããžã§ã¯ãã®æ £ç¿ã«é¢ãããããž https://conventionalcommits.org[image:https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg[Conventional Commits]] https://results.pre-commit.ci/latest/github/JonasPammer/ansible-role-bootstrap/master[image:https://results.pre-commit.ci/badge/github/JonasPammer/ansible-role-bootstrap/master.svg[pre-commit.ciã¹ããŒã¿ã¹]]
[[development-system-dependencies]] === ð éçºãã·ã³ã®äŸåé¢ä¿
- Python 3.10以äž
- Docker
[[development-dependencies]] === ð éçºäŸåé¢ä¿ éçºäŸåé¢ä¿ã¯ãhttps://pip.pypa.io/en/stable/user_guide/#requirements-files[pipèŠæ±ãã¡ã€ã«]ã«å®çŸ©ãããŠããŸããååã¯`requirements-dev.txt`ã§ãã Linuxçšã®ã€ã³ã¹ããŒã«æé ã®äŸã¯ä»¥äžã®éãã§ãïŒ
"optional": çŸåšã®ã·ã§ã«ã»ãã·ã§ã³ã®ããã«pythonä»®æ³ç°å¢ãäœæããã¢ã¯ãã£ãã«ããŸã
$ python3 -m venv venv $ source venv/bin/activate
$ python3 -m pip install -r requirements-dev.txt
[[development-guidelines]] === â¹ïž AnsibleããŒã«éçºã¬ã€ãã©ã€ã³
èå³ãããã°ãç§ãããã€ãã® https://github.com/JonasPammer/cookiecutter-ansible-role/blob/master/ROLE_DEVELOPMENT_TIPS.adoc[äžè¬çãªAnsibleããŒã«éçºïŒãã¹ãïŒãã©ã¯ãã£ã¹]ãæžããŠããŸãã
[[versioning]] === ð¢ ããŒãžã§ãã³ã°
ããŒãžã§ã³ã¯ https://git-scm.com/book/en/v2/Git-Basics-Tagging[ã¿ã°]ã䜿ã£ãŠå®çŸ©ãããããã https://galaxy.ansible.com/docs/contributing/version.html[Ansible Galaxyã§èªèãã䜿çšãããŸã]ã
ããŒãžã§ã³ã¯v
ããå§ããŠã¯ãããŸããã
æ°ããã¿ã°ãããã·ã¥ããããšã https://github.com/JonasPammer/ansible-role-bootstrap/actions/workflows/release-to-galaxy.yml[ GitHub CIã¯ãŒã¯ãããŒ]ïŒimage:https://github.com/JonasPammer/ansible-role-bootstrap/actions/workflows/release-to-galaxy.yml/badge.svg[ãªãªãŒã¹CI]ïŒãããŒã«ãç§ã®Ansible Galaxyã¢ã«ãŠã³ãã«ã€ã³ããŒãããããšã管çããŸãã
[[testing]] === 𧪠ãã¹ã èªåãã¹ãã¯ãGitHubã¯ãŒã¯ãããŒã䜿çšããŠåè²¢ç®ã«å¯ŸããŠå®è¡ãããŸãã
ãã¹ãã¯ã䞻㫠https://molecule.readthedocs.io/en/latest/[Molecule]ãå®è¡ãã<<tested-distributions,varying set of linux distributions>>ã䜿çšãã<<tested-ansible-versions,various ansible versions>>ã䜿çšããŸãã
Moleculeãã¹ãã«ã¯ããã¹ãŠã®Ansibleãã¬ã€ããã¯ããªã³ãããã¹ããããå«ãŸããŠãããhttps://github.com/ansible/ansible-lint#readme[`ansible-lint`]ã䜿çšããŠããã¹ããã©ã¯ãã£ã¹ãæ¹åã®å¯èœæ§ãããåäœã確èªããŸãã
ãã¹ããå®è¡ããã«ã¯ãã³ãã³ãã©ã€ã³ã§åã«tox
ãå®è¡ããŠãã ããã
Moleculeã«ãã£ãŠã¹ãã³ã¢ãããããDockerã³ã³ããã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ãå®çŸ©ããããã«ãªãã·ã§ã³ã®ç°å¢å€æ°ãæž¡ãããšãã§ããŸãïŒ
$ MOLECULE_DISTRO=ubuntu2204 tox
MOLECULE_DISTRO
ã«æž¡ãããå¯èœãªå€ã®ãªã¹ãã¯ãlink:.github/workflows/ci.yml[]ã«å®çŸ©ãããŠãããããªãã¯ã¹ãåç
§ããŠãã ããã
==== ð Moleculeã³ã³ããã®ãããã°
MOLECULE_DESTROY=never
ãªãã·ã§ã³ã§ã¢ã¬ãã¥ãŒã«ãã¹ããå®è¡ããŸããäŸïŒ
- [subs="quotes,macros"]
$ MOLECULE_DESTROY=never MOLECULE_DISTRO=#ubuntu1604# tox -e py3-ansible-#5# ... TASK [ansible-role-pip : (redacted).] pass:[************************] failed: [instance-py3-ansible-9] => changed=false ... pass:[___________________________________ summary ____________________________________] pre-commit: commands succeeded ERROR: py3-ansible-9: commands failed
- Moleculeã«ãã£ãŠæäŸãããDockerã³ã³ããã®ååã調ã¹ãŸãïŒ
- [subs="quotes"]
$ docker ps #30e9b8d59cdf# geerlingguy/docker-debian12-ansible:latest "/lib/systemd/systemd" 8 minutes ago Up 8 minutes instance-py3-ansible-9
- ã³ã³ããã®bashã·ã§ã«ã«å ¥ãããããã°ãè¡ããŸãïŒ
- [subs="quotes"]
$ docker exec -it #30e9b8d59cdf# /bin/bash
root@instance-py3-ansible-2:/#
[TIP]
倱æããããã°ããããšããŠããå Žåãããã¯verify.yml
ã¹ãããã®äžéšã§ãããå®éã®converge.yml
ã§ã¯ãªãããšãçè§£ããŠããå¿ èŠããããŸãã Ansibleã®ã¢ãžã¥ãŒã«ïŒvars
ïŒããã¹ãïŒhostvars
ïŒãããã³ç°å¢å€æ°ã®åºåããããããžã§ããŒãšDockerãã·ã³ã®äž¡æ¹ã«ãã¡ã€ã«ãšããŠä¿åãããŠããŸãïŒ
/var/tmp/vars.yml
ïŒhostvars
ããŒã®äžã«ãã¹ã倿°ãå«ãŸããŠããŸãïŒ/var/tmp/environment.yml
grep
ãcat
ããŸãã¯ãããã転éããŠãã ããïŒ
[TIP]
äžèšã®åèã«è¿°ã¹ããã¡ã€ã«ã¯ãç¹å®ã®ã¯ãŒã¯ãããŒå®è¡ã®GitHub CIã¢ãŒãã£ãã¡ã¯ãã«æ·»ä»ãããŠããŸãã+ ããã«ãããå®è¡éã®éãã確èªã§ããäœãããããããã倱æãåŒãèµ·ãããã®ãããããã°ããã®ã«åœ¹ç«ã¡ãŸãã
image::https://user-images.githubusercontent.com/32995541/178442403-e15264ca-433a-4bc7-95db-cfadb573db3c.png[]
- ãããã°ãå®äºããããçµäºããŠã³ã³ãããç Žæ£ããŸãïŒ
- [subs="quotes"]
root@instance-py3-ansible-2:/# exit
$ docker stop #30e9b8d59cdf#
$ docker container rm #30e9b8d59cdf# or $ docker container prune
==== ð ããŒã«ã«ã§ã€ã³ã¹ããŒã«ãããããã±ãŒãžããŒãžã§ã³ã®ãããã°
tox 3ã§ã¯æšæºæ©èœã§ããããã㯠https://github.com/tox-dev/tox/pull/2794[now] CI倿°ã®ååšãèªèãããšãã®ã¿èµ·ãããŸãã äŸãã°ïŒ
$ CI=true tox
[[development-container-extra]] === ð§ TIP: ã³ã³ããåãããçæ³çãªéçºç°å¢
ãã®ãããžã§ã¯ãã¯ã1ã¯ãªãã¯ã®ã³ã³ããåãããéçºç°å¢ãã®å®çŸ©ãæäŸããŸãã
ãã®ã³ã³ããã¯ãå éšã§Dockerã³ã³ãããå®è¡ããããšãå¯èœã«ãïŒDocker-In-Docker, dindïŒãMoleculeã®å®è¡ãå¯èœã«ããŸãã
䜿çšããã«ã¯ïŒ
- Visual Studio Codeéçºã³ã³ããã® ã·ã¹ãã èŠä»¶ãæºãããŠãã ããã å¿ èŠã«å¿ããŠããªã³ã¯ãããããŒãžã®__ã€ã³ã¹ããŒã«__ã»ã¯ã·ã§ã³ã«åŸã£ãŠãã ããã+ ãã®æé ã«ã¯ãDockerã®ã€ã³ã¹ããŒã«ãVisual Studio Codeèªäœã®ã€ã³ã¹ããŒã«ãããã³å¿ èŠãªæ¡åŒµæ©èœã®ã€ã³ã¹ããŒã«ãå«ãŸããŸãã
- ãããžã§ã¯ãããã·ã³ã«ã¯ããŒã³ããŸã
- Visual Studio Codeã§ãªããžããªã®ãã©ã«ããŒãéããŸãïŒ_ãã¡ã€ã« - ãã©ã«ããéã..._ïŒã
- éçºã³ã³ããã®å®çŸ©ãããããšãéç¥ããããã³ãããå³äžã«è¡šç€ºãããå Žåã¯ãæ¡å
ããããã¿ã³ãæŒããŠå
¥ããŸãã
ããã§ãªãå Žåãèªåã§Visual Studioã³ãã³ã
Remote-Containers: Open Folder in Container
ãå®è¡ããããšãã§ããŸãïŒè¡šç€º - ã³ãã³ããã¬ãã -> _ã¡ã³ã·ã§ã³ãããã³ãã³ããã¿ã€ã_ïŒã
[TIP]
éçºã³ã³ããæ©èœãæ£ããå®çŸ©ã®å€æŽãèªèããªãå Žåãããã®ã§ãããã«ããŸã« Remote-Containers: Rebuild Without Cache and Reopen in Container
ã䜿çšããããšããå§ãããŸãã
[泚]
ãã¹ãã·ã¹ãã ãèšå®ããŠãã³ã³ãããSSH/GPGããŒã䜿çšã§ããããã«ããå¿ èŠãããå ŽåããããŸãã
æé ã¯ãå ¬åŒã®éçºã³ã³ããããã¥ã¡ã³ãã®ãã³ã³ãããšå ±æ Git è³æ Œæ å ±ããåç §ããŠãã ãããhttps://code.visualstudio.com/remote/advancedcontainers/sharing-git-credentials
[[cookiecutter]] === ðª CookieCutter
ãã®ãããžã§ã¯ãã¯ãhttps://github.com/JonasPammer/cookiecutter-ansible-role[å ã ãã³ãã¬ãŒããšããŠäœ¿çšããCookieCutter]ãšåæãä¿ã¡ãŸãã å¯èœã§ããã° https://github.com/cruft/cruft[cruft] ã䜿çšããå¿ èŠã«å¿ããŠæåã§å€æŽãå ããŸãã
.å
¬åŒã® cruft update
䜿çšäŸ
image::https://raw.githubusercontent.com/cruft/cruft/master/art/example_update.gif[å
¬åŒã® cruft update
䜿çšäŸ]
==== ð 倿Žãã° æ°ããã¿ã°ãããã·ã¥ããããšããªããžããªã®ç®¡çè ã«ãã£ãŠé©åãªGitHubãªãªãŒã¹ãäœæãããã¿ã€ãã«ãšèª¬æã®ãã人éã«ãã倿Žãã°ãæäŸãããŸãã
[[pre-commit]] === â¹ïž äžè¬çãªãªã³ãããã³ã¹ã¿ã€ã«èŠçŽ äžè¬çãªãªã³ãããã³ã¹ã¿ã€ã«èŠçŽã¯ãhttps://stackoverflow.blog/2020/07/20/linters-arent-in-your-way-theyre-on-your-side/[*èªåçã«*åºæºã«é©åããŸã] ããŸããŸãª https://pre-commit.com/[`pre-commit`] ããã¯ã«ãã£ãŠãå°ãªããšãäžéšã¯ä¿æãããŸãã
ãã«ãªã¯ãšã¹ããèªåçã«ãã¡ã€ã«ã倿Žããããã³ãããããšã«ãªã³ããã§ãã¯ãå®è¡ããŸãã
泚ïŒ
====
äžéšã®pre-commitããã¯ã¯ãæ§æãã³ãŒãã®ãã¹ããè¡ãããšã©ãŒãèŠåããããšããããŸããããããã¯ãã¹ãã¹ã€ãŒãã®äžéšã§ãã
ãã¹ãã«é¢ããæ
å ±ã¯ã<
[TIP]
[[note_pre-commit-ci]] ããã§ããããŒã«ã«ã®éçºã¯ãŒã¯ãããŒã«pre-commitãçµ±åããããšããå§ãããŸãã
ãã®ããã«ã¯ãå
éãããããžã§ã¯ãã®ãã£ã¬ã¯ããªã«ç§»åããpre-commit install
ãå®è¡ããŸãã
ããã«ãããgitã¯äœæãããã¹ãŠã®ã³ãããã«å¯ŸããŠpre-commitãã§ãã¯ãå®è¡ããããã¯ãèŠåãçºããå Žåã¯ã³ããããäžæ¢ããŸãã
ãŸããããšãã°ãpre-commit run --all-files
ãå®è¡ããããšã§ããã€ã§ãpre-commitã®ããã¯ãå®è¡ããããšãã§ããŸãã
== ðª è²¢ç® https://open.vscode.dev/jonaspammer/ansible-role-bootstrap[image:https://img.shields.io/static/v1?logo=visualstudiocode&label=&message=Open%20in%20Visual%20Studio%20Code&labelColor=2c2c32&color=007acc&logoColor=007acc[Visual Studio Codeã§éã]] image:https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square[PRãæè¿ããŸã]
// README.adoc ã«å«ãŸããŠããŸã :toc: :toclevels: 3
以äžã®ã»ã¯ã·ã§ã³ã¯äžè¬çãªå
容ã§ãããæ°ããè²¢ç®è
ãæ¯æŽããããã«äœ¿çšãããŸãã
ãã®ãããžã§ã¯ãã®å®éã®ãéçºããã¥ã¡ã³ãã㯠<
=== åæ ãŸãããã®ãããžã§ã¯ããžã®è²¢ç®ãèããŠããã ããããããšãããããŸãã
ãããã®ã¬ã€ãã©ã€ã³ã«åŸãããšã§ãéçºè ã®æéãå°éããŠããããšãã³ãã¥ãã±ãŒã·ã§ã³ã§ããŸãã ãã®å¯ŸäŸ¡ãšããŠãéçºè ã¯ããªãã®åé¡ã«å¯ŸåŠãã倿Žãè©äŸ¡ãããã«ãªã¯ãšã¹ãã®å®äºãå©ããããšã§ãã®å°éãè¿ããŠãããã¹ãã§ãã
[[cookiecutter--contributing]] === ðª CookieCutter ãã®ãããžã§ã¯ãã®å€ãã®ãã¡ã€ã«ã¯ãhttps://github.com/JonasPammer/cookiecutter-ansible-role[å ã ãã³ãã¬ãŒããšããŠäœ¿çšããCookieCutter]ã«ç±æ¥ããŠããŸãã
ããªããèããŠããç·šéæ¡ãå®éã«ãã®ãã³ãã¬ãŒãã«é©çšå¯èœã確èªãã ããã§ããã°ãããã«é©åãªå€æŽãå ããŠãã ããã ããªãã®å€æŽãéšåçã«ãã³ãã¬ãŒãã«ãéšåçã«ãã®ãããžã§ã¯ãã«ç¹æã§ããå Žåãè€æ°ã®PRãäœæããããšã«ãªããŸãã
=== ð¬ äžè¬çãªè²¢ç®ã®å®çŸ©
äžè¬çãªè²¢ç®è ã¯ãhttps://github.com/JonasPammer/JonasPammer/blob/master/demystifying/conventional_commits.adoc[__å®çŸ©__]ã«åŸãããšãå¿é ããå¿ èŠã¯ãããŸããã ãã«ãªã¯ãšã¹ãã¯ãã®ãããžã§ã¯ãã«äžã€ã®ã³ããããšããŠçµ±åãããããã§ãã ãã ããã³ã¢ã¡ã³ããŒã¯ããã«åŸãå¿ èŠããããŸãïŒäŸïŒèªåããŒãžã§ã³æ±ºå®ã倿Žå±¥æŽçæãæ©èœãããããïŒã
=== ð å§ããããã«
è²¢ç®ã¯Issuesããã«ãªã¯ãšã¹ãïŒPRïŒãéããŠãã®ãªããžããªã«è¡ããŸãã 以äžã¯äž¡æ¹ã«é©çšãããããã€ãã®äžè¬çãªã¬ã€ãã©ã€ã³ã§ãïŒ
- èªåèªèº«ã®IssuesãPRãäœæããåã«ãæ¢åã®ãã®ãæ€çŽ¢ããŠãã ããã
- åããŠè²¢ç®ããå Žåã¯ãhttps://auth0.com/blog/a-first-timers-guide-to-an-open-source-project/[Auth0ã®ããã°ã«ããåããŠã®ã¬ã€ã]ãåç §ããŠããªãœãŒã¹ãšãã³ããåŸãŠãã ããã
==== Issues
Issuesã¯åé¡ãå ±åããããæ°ããæ©èœããªã¯ãšã¹ãããããPRãäœæããåã«æœåšçãªå€æŽã«ã€ããŠè©±ãåãããã«äœ¿çšããã¹ãã§ãã https://github.com/JonasPammer/ansible-role-bootstrap/issues/new[ æ°ããIssueãäœæãã]ãšãã«ã¯ãææ»ã«å¿ èŠãªæ å ±ãåéããããã®ãã³ãã¬ãŒããããŒããããŸãã
ããªããæ±ããŠããåé¡ã«å¯ŸåŠããŠããIssueãèŠã€ããå Žåã¯ã æ°ãããã®ãäœæããã®ã§ã¯ãªãæ¢åã®Issueã«èªåã®åçŸæ å ±ã远å ããŠãã ããã åå¿ã远å ããããšããç¹å®ã®åé¡ãã¬ããŒã¿ãŒä»¥å€ã«ã圱é¿ãäžããŠããããšã管çè ã«ç€ºãã®ã«åœ¹ç«ã¡ãŸãã
==== ãã«ãªã¯ãšã¹ã
ãã®ãããžã§ã¯ãã«å¯ŸããPRã¯åžžã«æè¿ãããŠãããæ¬¡ã®ãªãªãŒã¹ã®ããã®ä¿®æ£ãæ¹åãæ©ãã¹ã©ãŒãã«èŒããææ®µãšãªããŸãã https://blog.ploeh.dk/2015/01/15/10-tips-for-better-pull-requests/[äžè¬çã«ãPRã¯ä»¥äžãæºããå¿ èŠããããŸã]ïŒ
- 該åœããæ©èœã®ã¿ãä¿®æ£/远å ãã ãŸãã¯åºç¯å²ã«ããã£ãŠã®ç©ºçœ/ã¹ã¿ã€ã«ã®åé¡ã«å¯ŸåŠãããäž¡æ¹ãè¡ããªãã
- ä¿®æ£ãŸãã¯å€æŽãããæ©èœã®ããã«ãŠããããŸãã¯çµ±åãã¹ãã远å ããïŒãã¹ãã¹ã€ãŒããæ¢ã«ååšããå ŽåïŒã
- åäžã®æžå¿µã«å¯ŸåŠãã
- ãªããžããªå ã«ææžãå«ãã
- ãã«ãªã¯ãšã¹ããäœæããéã«èªåçã«ããŒããããå®å šãªãã«ãªã¯ãšã¹ããã³ãã¬ãŒããå«ãããšã
ã³ã¢æ©èœã«åœ±é¿ãäžãã倿Žããç Žå£ç倿Žãå¿ èŠãšãã倿ŽïŒããšãã°ãå€§èŠæš¡ãªãªãªãŒã¹ïŒã«ã€ããŠã¯ãæåã«IssueãéããŠææ¡ã«ã€ããŠè°è«ããæ¹ãè¯ãã§ãããã
äžè¬çã«ãç§ãã¡ã¯ããã©ãŒã¯ããŠãã«ãGitã¯ãŒã¯ãããŒã«åŸããŸãïŒ
- ãªããžããªãèªèº«ã®Githubã¢ã«ãŠã³ãã«ãã©ãŒã¯ããŸã
- ãããžã§ã¯ããèªèº«ã®ãã·ã³ã«ã¯ããŒã³ããŸã
- ç°¡æœãã€èª¬æçãªååã§ããŒã«ã«ãã©ã³ããäœæããŸã
- ãã©ã³ãã«å€æŽãã³ãããããŸã
- ãã®ãªããžããªã«åºæã®æžåŒèšå®ãšãã¹ãã¬ã€ãã©ã€ã³ã«åŸããŸã
- ãã©ãŒã¯ã«å€æŽãããã·ã¥ããŸã
- ç§ãã¡ã®ãªããžããªã«PRãéãã倿Žãå¹ççã«ã¬ãã¥ãŒããããã«PRãã³ãã¬ãŒãã«åŸããŸãã
[[changelog]] == ð 倿Žãã° ãã®ãªããžããªã® https://github.com/JonasPammer/ansible-role-bootstrap/releases[ãªãªãŒã¹ããŒãž]ãåç §ããŠã察å¿ãã人éã«ãã倿Žãã°ã確èªããŠãã ããã
ãã®ãããžã§ã¯ãã¯ã»ãã³ãã£ãã¯ããŒãžã§ãã³ã°ãéµå®ããŠããŸãã ãã€ããŒããŒãžã§ã³ã®æŽæ°ã§ã®æå³ããªãç Žå£ç倿Žã¯å ±åããŠãã ããã
== âïž ã©ã€ã»ã³ã¹
.link:LICENSE[]
MITã©ã€ã»ã³ã¹
Copyright (c) 2022, Jonas Pammer
ãã®ãœãããŠã§ã¢ããã³é¢é£ããææžãã¡ã€ã«ïŒä»¥äžããœãããŠã§ã¢ããšãããŸãïŒãååŸãããã¹ãŠã®è ã«ç¡åã§é åžãããããšãèš±å¯ããŸãã å¶éãªãããœãããŠã§ã¢ãå©çšãã³ããŒãä¿®æ£ãçµåãåºçãé åžããµãã©ã€ã»ã³ã¹ã販売ããæš©å©ãæã¡ãä»ã®è ã«ããããèš±å¯ããããšãšããŸããããã«ã¯ä»¥äžã®æ¡ä»¶ãä»å±ããŸãïŒ
äžèšã®èäœæš©è¡šç€ºåã³ããã®èš±å¯è¡šç€ºã¯ããã¹ãŠã®ãœãããŠã§ã¢ã®ã³ããŒãŸãã¯éèŠãªéšåã«å«ãŸããŸãã
ãœãããŠã§ã¢ã¯ãçŸç¶æå§¿ãã§æäŸããããããªãçš®é¡ã®ä¿èšŒããããŸããã æç€ºçãŸãã¯æé»çãªä¿èšŒãå«ã¿ãŸããããããªãååæ§ãç¹å®ã®ç®çã®é©åæ§ããŸãã¯é䟵害ã«é¢ããä¿èšŒã¯å«ãŸããŸããã èäœè ãŸãã¯èäœæš©ææè ã¯ãå¥çŽãããŒãããŸãã¯ãã®ä»ã®è¡çºã«ãã£ãŠçããè«æ±ãæå®³ãŸãã¯ãã®ä»ã®è²¬ä»»ã«ã€ããŠãäžå責任ãè² ããªããã®ãšããŸãã
ãã®ç¿»èš³ã圹ç«ã€ããšãé¡ã£ãŠããŸãã
An ansible role for preparing a linux system to be managed by ansible. Based on robertdebock's role.
ansible-galaxy install jonaspammer.bootstrap