Skip to content

Latest commit

 

History

History
500 lines (374 loc) · 28.7 KB

File metadata and controls

500 lines (374 loc) · 28.7 KB

他の蚀語でもお読みいただけたす:
uk English, japan 日本語.

この挔習は、Ansible が Chocolatey を䜿甚した Windows ゜フトりェアの管理のすべおの偎面を簡単に制埡できるようにする方法を玹介するこずを目的ずしおいたす。パッケヌゞのむンストヌル、曎新、アンむンストヌル、さたざたな゜ヌスの管理、chocolatey クラむアントの構成、およびシステム管理者が実行するその他の䞀般的なタスクに぀いお説明したす。

Chocolatey ずは䜕でしょうか。簡単に蚀えば、Chocolatey は Windows 甚のパッケヌゞ管理システムです。Chocolatey は、゜フトりェア管理を簡玠化し、Windows ゜フトりェアラむフサむクル党䜓の自動化を容易にするこずを目的ずしおいたす。

オヌプン゜ヌスの Chocolatey クラむアントは基本的なパッケヌゞ管理機胜を提䟛し、Chocolatey For Business スむヌトは高床な機胜セットを提䟛したす。いく぀かのハむラむトを次に瀺したす。

  • Package Builder を䜿甚するず、EXE、MSI、zip、たたはスクリプトを取埗しお、わずか 5 秒で自動的に Chocolatey パッケヌゞに倉換できたす (むンストヌラヌのサむレント匕数を把握できたす)。
  • Package Internalizer は、メンテナが Chocolatey Community Repository で既に構築した 8000 以䞊のパッケヌゞを取埗し、内郚で䜿甚するためのロヌカラむズされたオフラむンバヌゞョンを䜜成したす (䟝存関係を含む)。
  • Package Synchronizer を䜿甚するず、Programs and Features にリストされおいるアプリケヌション甚のChocolatey パッケヌゞを䜜成し、他のパッケヌゞず同じように管理できたす。
  • Chocolatey セルフサヌビス GUI を䜿甚するず、゚ンドナヌザヌは管理者暩限や昇栌された暩限を必芁ずせずにパッケヌゞを管理できたす。
  • Chocolatey Central Management は、Web ダッシュボヌドず API (Automation Controller に類䌌) であり、゚ンドポむントの資産党䜓の高レベルの抂芁ずレポヌトを提䟛したす。

セクション 1: win_chocolatey モゞュヌル

ステップ 1: アドホックコマンドを䜿甚しおパッケヌゞをむンストヌルする

たず、アドホックコマンドを䜿甚しお、win_chocolatey モゞュヌルを䜿甚しお git をむンストヌルしたす。win_chocolatey モゞュヌルは、Chocolatey を䜿甚しお Windows システム䞊のパッケヌゞを管理するために䜿甚されたす。
たず、巊偎のパネルの Inventories をクリックしおから、むンベントリヌ Workshop Inventory の名前をクリックしたす。Inventory Details ペヌゞが衚瀺されたので、ホストを遞択する必芁がありたす。したがっお、HOSTS をクリックしたす。

各ホストの暪にはチェックボックスがありたす。アドホックコマンドを実行する各ホストの暪にあるチェックボックスをオンにしたす。次に、RUN COMMANDS ボタンが有効になりたす。今すぐクリックしおください。

Run Command

これにより、Execute Command りィンドりがポップアップ衚瀺されたす。ここから、ホストに察しお単䞀のタスクを実行できたす。

このフォヌムに次のように蚘入したす。

Key Value Note
MODULE win_chocolatey
ARGUMENTS name=git state=present The name and state of the package
LIMIT This will be pre-filled out for you with the hosts you selected
MACHINE CREDENTIAL Student Account

Run Win_Chocolatey

LAUNCH をクリックするず、ゞョブログにリダむレクトされたす。

ゞョブの出力には、次のような結果が衚瀺されたす。

Win_Chocolatey Job Output

出力は、git がむンストヌルされたこずを瀺す CHANGED ステヌタスを報告しおいるこずがわかりたす。結果には、Chocolatey クラむアントがシステムにないずいう譊告も衚瀺されるため、このタスク実行の䞀郚ずしおむンストヌルされたした。win_chocolatey モゞュヌルを䜿甚する将来のタスクは、クラむアントを怜出し、䜕もむンストヌルせずに䜿甚する必芁がありたす。確認するには、DETAILS セクションのロケットアむコンをクリックしおゞョブを再実行したす。出力に譊告が衚瀺されず、倉曎も報告されたせん。ただし、win_chocolatey (倚くの Ansible モゞュヌルず同様) モゞュヌルが冪等 (以前の実行が 2 ぀のパッケヌゞをむンストヌルしたしたが、これはなにもむンストヌルしないため、実行時間は短くなりたす) であるため、代わりに SUCCESS ステヌタスが報告されたす。

Win_Chocolatey re run Job Output

そのようにしお、git がむンストヌルされおいたす。

ステップ 2: 特定のバヌゞョンの耇数のパッケヌゞをむンストヌルする

最埌のステップでは、アドホックな方法で 1 ぀のパッケヌゞをむンストヌルしたした。ただし、実際には、マルチステッププレむの 1 ぀のステップずしおパッケヌゞのむンストヌルを含めるこずをお勧めしたす。たた、耇数のパッケヌゞ (堎合によっおはそのパッケヌゞの特定のバヌゞョン) をむンストヌルするこずも考えられたす。この挔習では、これを行いたす。

たずは Visual StudioCode に戻りたす。WORKSHOP_PROJECT セクションの䞋に chocolatey ずいうディレクトリヌず install_packages.yml ずいうファむルを䜜成したす。

これで、Playbook の䜜成に䜿甚できる゚ディタヌが右偎のペむンで開いおいるはずです。

Empty install_packages.yml

たず、プレむを定矩したす。

---
- name: Install Specific versions of packages using Chocolatey
  hosts: all
  gather_facts: false
  vars:
    choco_packages:
      - name: nodejs
        version: 13.0.0
      - name: python
        version: 3.6.0

Ansible によっお収集されたファクトは必芁ないか䜿甚しないため、オヌバヌヘッドを枛らすために gather_facts: false を蚭定しおファクト収集を無効にしたした。たた、Chocolatey を䜿甚しおむンストヌルするパッケヌゞの名前ずバヌゞョンを保持するために、vars ディレクティブの䞋に choco_packages ずいう名前の1぀の蟞曞倉数を定矩したした。

次に、タスクを远加したす。

{% raw %}

  tasks:

  - name: Install specific versions of packages sequentially
    win_chocolatey:
      name: "{{ item.name }}"
      version: "{{ item.version }}"
    loop: "{{ choco_packages }}"

  - name: Check python version
    win_command: python --version
    register: check_python_version

  - name: Check nodejs version
    win_command: node --version
    register: check_node_version

  - debug:
      msg: Python Version is {{ check_python_version.stdout_lines[0] }} and NodeJS version is {{ check_node_version.stdout_lines[0] }}

{% endraw %}

タスクセクションに 4 ぀のタスクを远加したした。

  • 最初のタスクは win_chocolatey モゞュヌルを䜿甚し、choco_packages 倉数をルヌプしお、指定されたバヌゞョンの各補品をむンストヌルしたす
  • 2 番目ず 3 番目のタスクは、win_command モゞュヌルを䜿甚しおコマンドを実行し、それぞれ python ず node のバヌゞョンをチェックしお、それぞれの出力を登録したす。
  • 4 番目の最埌のタスクでは、debug モゞュヌルを䜿甚しお、手順 2 ず 3 で収集した情報を含むメッセヌゞを衚瀺したした。

ヒント

win_chocolatey モゞュヌルの name 属性は、実際にはルヌプの必芁性を回避しおパッケヌゞのリストを取埗できたすが、ルヌプを䜿甚するず、各パッケヌゞのバヌゞョンを指定し、順序が適切な堎合はそれらを順番にむンストヌルできたす。win_chocolatey モゞュヌルの詳现は、[docs](https://docs.ansible.com/ansible/latest/collections/chocolatey/chocolatey/win_chocolatey_module.html を参照しおください。

完成した Playbook install_packages.yml は次のようになりたす。

{% raw %}

---
- name: Install Specific versions of packages using Chocolatey
  hosts: all
  gather_facts: false
  vars:
    choco_packages:
      - name: nodejs
        version: 13.0.0
      - name: python
        version: 3.6.0
  tasks:

  - name: Install specific versions of packages sequentially
    win_chocolatey:
      name: "{{ item.name }}"
      version: "{{ item.version }}"
    loop: "{{ choco_packages }}"

  - name: Check python version
    win_command: python --version
    register: check_python_version

  - name: Check nodejs version
    win_command: node --version
    register: check_node_version

  - debug:
      msg: Python Version is {{ check_python_version.stdout_lines[0] }} and NodeJS version is {{ check_node_version.stdout_lines[0] }}

{% endraw %}

これで Playbook の準備ができたした。

  • メニュヌから File > Save をクリックしお (たたは Ctrl+S で) 䜜業内容を保存したす。
  • 倉曎を git にコミットしたす。Adding install_packages.yml などの関連するコミットメッセヌゞを䜿甚したす。
  • 円圢の矢印をクリックしお、コミットされた倉曎をリポゞトリにプッシュしたす。
  • (オプション) GitLab Access の䞋の情報を䜿甚しお GitLab に移動し、コヌドが git であるこずを確認したす。

次に、Automation Controller に戻り、プロゞェクトを同期しお、Controller が新しい Playbook を䜿うようにしたす。Projects をクリックしおから、プロゞェクトの暪にある同期アむコンをクリックしたす。

プロゞェクトの同期

これが完了したら、新しいゞョブテンプレヌトを䜜成したす。Templates を遞択し、远加 アむコンをクリックしお、ゞョブテンプレヌトを遞択したす。新しいテンプレヌトには次の倀を䜿甚したす。

Key Value Note
Name Chocolatey - Install Packages
Description Template for the install_packages playbook
JOB TYPE Run
INVENTORY Workshop Inventory
PROJECT Ansible Workshop Project
PLAYBOOK chocolatey/install_packages.yml
CREDENTIAL Type: Machine. Name: Student Account
LIMIT windows
OPTIONS

ゞョブテンプレヌトの䜜成

SAVE、LAUNCH の順にクリックしお、ゞョブを実行したす。ゞョブは正垞に実行され、倉数で指定されたパッケヌゞの Ansible ルヌプずむンストヌルを確認できるはずです。

ゞョブテンプレヌトの実行

ヒント

これで、Playbook の䜜成たたは線集、倉曎のコミット、および git ぞのプッシュのフロヌが理解できたず思いたす。たた、プロゞェクトの曎新、Automation Controller でのゞョブテンプレヌトの䜜成ず実行にも慣れたこずでしょう。埌のステップでは、各ステップを省略したす。

ステップ 3: むンストヌルされおいるすべおのパッケヌゞを曎新する

win_chocolatey モゞュヌルは、パッケヌゞをむンストヌルするだけでなく、パッケヌゞのアンむンストヌルおよび曎新にも䜿甚されたす。モゞュヌルが実行するアクションは、state パラメヌタヌに枡す倀に基づいおいたす。枡すこずができるオプションには、次のものがありたす。

  • present: パッケヌゞがむンストヌルされおいるこずを確認したす。
  • absent: パッケヌゞがむンストヌルされおいないこずを確認したす。
  • latest: パッケヌゞが利甚可胜な最新バヌゞョンにむンストヌルされおいるこずを確認したす。

前回のプレむブックでは state の倀を明瀺的に定矩および蚭定しおいなかったため、パッケヌゞをむンストヌルするための state パラメヌタヌの蚭定倀ずしおデフォルト倀の present が䜿甚されたした。ただし、意図的に叀いバヌゞョンのパッケヌゞをむンストヌルしたため、それらのパッケヌゞを曎新する必芁がありたす。

Visual Studio Code で、chocolatey フォルダヌの䞋に update_packages.yml ずいう名前の新しいファむルを䜜成したす。この Playbook では、latest パラメヌタに倀ずしお枡された state を䜿甚しお win_chocolatey モゞュヌルを䜿甚するプレむを䜜成したす。Chocolatey によっお以前にむンストヌルされたすべおのパッケヌゞを曎新するため、name パラメヌタヌには特定のパッケヌゞ名を指定せずに、倀 all を䜿甚したす。

ヒント

name 属性に蚭定される倀ずしお all を䜿甚する方法に関する情報は、win_chocolatey のモゞュヌル docs にありたす。初めお䜿甚するモゞュヌルのドキュメントを垞に確認しおください。倚くの堎合、倚くの䜜業を節玄するのに圹立぀情報がありたす。

update_packages.yml の内容は次のずおりです。

---
- name: Update all packages using Chocolatey
  hosts: all
  gather_facts: false
  tasks:

  - name: Update all installed packages
    win_chocolatey:
      name: all
      state: latest

  - name: Check python version
    win_command: python --version
    register: check_python_version

  - name: Check nodejs version
    win_command: node --version
    register: check_node_version

  - debug:
      msg: Python Version is {{ check_python_version.stdout_lines[0] }} and NodeJS version is {{ check_node_version.stdout_lines[0] }}

他のタスクは、曎新タスクの実行埌に nodejs ず python のバヌゞョンを確認できるようにするためにありたす。簡単です。

次に、新しい Playbook が Git にあり、Automation Controller がそれを認識できるこずを確認しおから、次の倀を䜿甚しお新しいゞョブテンプレヌトを䜜成しお実行したす。

ヒント

ほがすべおが、パッケヌゞをむンストヌルするために䜜成した最初のゞョブテンプレヌトず同様です。Tempates に移動し、Chocolatey - Install Packages テンプレヌトの隣の コピヌ アむコンをクリックするず、そのゞョブテンプレヌトを copy できたす。これにより、そのテンプレヌトのコピヌが䜜成されたす。その名前をクリックしお線集し、実行する名前、説明、および Playbook に倉曎を加えるこずができたす。Playbook は最初から䜜成するこずもできたす。

Key Value Note
Name Chocolatey - Update Packages
Description Template for the update_packages playbook
JOB TYPE Run
INVENTORY Workshop Inventory
PROJECT Ansible Workshop Project
PLAYBOOK chocolatey/update_packages.yml
CREDENTIAL Type: Machine. Name: Student Account
LIMIT windows
OPTIONS

新しいテンプレヌトを実行した埌、debug タスクメッセヌゞを調べお、バヌゞョンを install_packages ゞョブ出力からのものず比范したす。これらのパッケヌゞは曎新であるため、バヌゞョンは高くなるはずです (アドホックコマンドを䜿甚しおむンストヌルした git パッケヌゞも曎新がチェックされたす。むンストヌルの数分埌に曎新される可胜性はほずんどありたせん)。

ゞョブテンプレヌトの実行

セクション 2: Chocolatey のファクトず蚭定

win_chocolatey モゞュヌルは Chocolatey でパッケヌゞを管理するために実際に䜿甚されるものですが、Ansible で䜿甚できる Chocolatey モゞュヌルはこれだけではなく、Windows タヌゲットで Chocolatey を管理および構成するのに圹立぀他のモゞュヌルがありたす。この挔習では、win_chocolatey_facts ず win_chocolatey_config の 2 ぀を芋おいきたす。

ステップ 1: Chocolatey ファクトの収集

最初に䜿甚するモゞュヌルは win_chocolatey_facts モゞュヌルです。このモゞュヌルは、むンストヌルされたパッケヌゞ、蚭定、機胜、゜ヌスなどの情報を Chocolatey から収集するために䜿甚されたす。これは、レポヌト生成ずしおのタスク、たたは他のタスクで定矩された条件に圹立ちたす。

ヒント >

詳现は、docs. の win_chocolatey_facts を参照しおください。

それでは、収集した情報を収集しお衚瀺するための簡単な Playbook を䜜成しお、このモゞュヌルによっお収集された情報を詳しく芋おいきたしょう。

Visual Studio Code の chocolatey フォルダヌの䞋に、chocolatey_configuration.yml ずいう名前の新しいファむルを䜜成したす。そのファむルの内容は次のようになりたす。

---
- name: Chocolatey Facts and Configuration
  hosts: all
  gather_facts: false
  tasks:

  - name: Gather facts from Chocolatey
    win_chocolatey_facts:

  - name: Displays the gathered facts
    debug:
      var: ansible_chocolatey

最初のタスクは、win_chocolatey_facts を䜿甚しおタヌゲット Windows マシン䞊の Chocolatey から利甚可胜なすべおの情報を収集し、この情報を ansible_chocolatey ずいう名前の倉数に栌玍したす。この倉数は、debug モゞュヌルを䜿甚しお内容を出力しお詳现を調べたす。

新しい Playbook を゜ヌス管理リポゞトリに远加し、Automation Controller で プロゞェクトを同期しおから、次の倀を䜿甚しお新しいゞョブテンプレヌトを䜜成しお実行したす。

Key Value Note
Name Chocolatey - Facts and configuration
Description Template for the chocolatey_configuration playbook
JOB TYPE Run
INVENTORY Workshop Inventory
PROJECT Ansible Workshop Project
PLAYBOOK chocolatey/chocolatey_conguration.yml
CREDENTIAL Type: Machine. Name: Student Account
LIMIT windows
OPTIONS

ゞョブの出力には、最初のタスクで収集された ansible_chocolatey 倉数の内容が衚瀺されたす。

ゞョブテンプレヌトの実行

出力をスクロヌルしお倀を確認するず、Windows タヌゲットでの Chocolatey クラむアントの蚭定、有効および無効な機胜、むンストヌルされおいるパッケヌゞ (前の挔習でむンストヌルしたパッケヌゞが衚瀺されおいるでしょうか)、および゜ヌスが衚瀺されたす。そこからパッケヌゞをむンストヌルしたす (これに぀いおは埌で詳しく説明したす)。この情報は JSON 圢匏であるため、オブゞェクトツリヌをトラバヌスするこずで個々の倀にアクセスできるこずに泚意しおください。たずえば、むンストヌルされたパッケヌゞに関する情報のみに関心があり、たずえばむンストヌルされたパッケヌゞのレポヌトを生成する堎合は、ansible_chocolatey.packages キヌを䜿甚しおそれらの倀にアクセスできたす。


ヒント

win_chocolatey_facts モゞュヌルによっお収集された情報を衚瀺するためだけに debug タスクを䜿甚する必芁はありたせんでした。代わりに、Ansible Tower のゞョブ出力ペむンで、Windows タヌゲットでタスクを実行した結果をクリックしたす。これにより、その特定のホストのホストむベントダむアログが開きたす。遞択したむベントの圱響を受けるホストずそのむベントの出力に関する情報が衚瀺されたす (この堎合、win_chocolatey_facts モゞュヌルによっお返される JSON オブゞェクトが実行されたす)


ステップ 2: Chocolatey を構成する

前の手順で、win_chocolatey_facts モゞュヌルを䜿甚しお Windows タヌゲット䞊の Chocolatey クラむアントの構成を収集できるこずを確認したした。では、これらの構成を倉曎する堎合はどうでしょうか。そのためのモゞュヌルが存圚したす。

win_chocolatey_config モゞュヌルを䜿甚しお、蚭定オプションの倀を倉曎するか、それらをすべおたずめお蚭定解陀するこずにより、Chocolatey 蚭定を管理できたす。


ヒント >

詳现は、[docs](https://docs.ansible.com/ansible/latest/collections/chocolatey/chocolatey/win_chocolatey_config_module.html の win_chocolatey_config を参照しおください。


ヒント

詳现は、 Chocolatey の蚭定 [こちら](https://docs.chocolatey.org/en-us/configurationを参照しおください。

cacheLocation ず commandExecutionTimeoutSeconds の 2 ぀の蚭定オプションの倀を倉曎したす。前の手順の出力では、cacheLocation が蚭定されおいないか、倀が構成されおいないこずがわかりたした。これはデフォルト蚭定であり、commandExecutionTimeoutSeconds の倀がデフォルト倀の 2700 に蚭定されおいたす。これらの蚭定オプションを倉曎したす。

  • cacheLocation を C:\ChocoCache に蚭定したす。
  • commandExecutionTimeoutSeconds を 1 時間たたは 3600 秒に蚭定したす。

Visual Studio Codeで、chocolatey_configuration.yml Playbook を線集しお、次のタスクを远加したす。

  - name: Create a directory for the new Chocolatey caching directory
    win_file:
      path: C:\ChocoCache
      state: directory

  - name: Configure Chocolatey to use the new directory as the cache location
    win_chocolatey_config:
      name: cacheLocation
      state: present
      value: C:\ChocoCache

  - name: Change the Execution Timeout Setting
    win_chocolatey_config:
      name: commandExecutionTimeoutSeconds
      state: present
      value: 3600

  - name: ReGather facts from Chocolatey after new reconfiguring
    win_chocolatey_facts:

  - name: Displays the gathered facts
    debug:
      var: ansible_chocolatey.config

これらの新しいタスクは、以䞋を実行したす。

  • win_file モゞュヌルを䜿甚しおディレクトリヌ C:\ChocoCache を䜜成したす。
  • cacheLocation を䜿甚しお、win_chocolatey_config の倀を新たに䜜成されたディレクトリヌに倉曎したす。
  • commandExecutionTimeoutSeconds の倀を 3600 に倉曎したす。
  • 蚭定倀を倉曎した埌、Chocolatey ファクトを再収集したす。
  • そしお最埌に、刷新された Chocolatey ファクトのconfigの郚分を出力したす。

chocolatey_configuration.yml Playbook の内容は以䞋のようになりたす。

---
- name: Chocolatey Facts and Configuration
  hosts: all
  gather_facts: false
  tasks:

  - name: Gather facts from Chocolatey
    win_chocolatey_facts:

  - name: Displays the gathered facts
    debug:
      var: ansible_chocolatey

  - name: Create a directory for the new Chocolatey caching directory
    win_file:
      path: C:\ChocoCache
      state: directory

  - name: Configure Chocolatey to use the new directory as the cache location
    win_chocolatey_config:
      name: cacheLocation
      state: present
      value: C:\ChocoCache

  - name: Change the Execution Timeout Setting
    win_chocolatey_config:
      name: commandExecutionTimeoutSeconds
      state: present
      value: 3600

  - name: ReGather facts from Chocolatey after new reconfiguring
    win_chocolatey_facts:

  - name: Displays the gathered facts
    debug:
      var: ansible_chocolatey.config

倉曎をコミットしお゜ヌス管理にプッシュし、Automation Controller でプロゞェクトを同期しお、Chocolatey - Facts and Configuration ゞョブテンプレヌトを実行したす。

ヒント

挔習 1 で Automation Controller でプロゞェクトを䜜成したずきに、UPDATE REVISION ON LAUNCH のオプションをチェックしたので、Controller でプロゞェクトを曎新する必芁はありたせんでした。しかし、そのオプションをチェックしおいない堎合を想定しおいたす。

Playbook を実行しお蚭定を倉曎し、ansible_chocolatey.config セクションの倀を瀺す最埌の debug タスクからの出力にそれらの倉曎を反映し、cacheLocation ず commandExecutionTimeoutSeconds の新しい倀を衚瀺する必芁がありたす。

ゞョブテンプレヌトの実行



これで終わりです。今回の挔習では、Chocolatey に関連する Ansible モゞュヌルの倚くをカバヌしたした (ただし、win_chocolatey_sourceずwin_chocolatey_feature に぀いおは [こちら](https://docs.ansible.com/ansible/latest/collections/chocolatey/chocolatey/win_chocolatey_feature_module.htmlず こちら を参照しおください) 願わくば、Ansible ず Chocolatey を組み合わせお Windows パッケヌゞを管理するこずで、その可胜性を味わっおいただきたいず思いたす。



Click here to return to the Ansible for Windows Workshop