Chef >

目次

インストール

Windows 10 Fall Creator Update(2017年10月)以降

  • 開発者モードは不要となっています。
  1. コントロールパネル > プログラム > Windowsの機能の有効化または無効化 を開き、Windows Subsystem for Linux を有効にします。
  2. Microsoft Storeから Ubuntu をインストールします。

Windows 10 Fall Creator Update(2017年10月)未満

  • Windows 10 Anniversary Update(2016年9月)以降が必要です。
  1. 設定 > 更新とセキュリティ > 開発者向け を開き、開発者モードに変更します。この時点でSSHサーバも開始されます。
  2. コントロールパネル > プログラム > Windowsの機能の有効化または無効化 を開き、Windows Subsystem for Linux (Beta) を有効にします。
  3. コマンドプロンプトを開き、bashコマンドを実行します。指示に従いセットアップを行います。セットアップが成功するとシェルのプロンプトが表示されます。
    >bash
    -- ベータ機能 --
    これにより Windows に Ubuntu がインストールされます。Ubuntu は Canonical によって配布される製品であり、
    次のサイトに示される条件に基づいてライセンスされています。
    https://aka.ms/uowterms
    
    続行するには、"y" を入力してください: y
    Windows ストアからダウンロードしています... 100%
    ファイル システムを展開しています。この処理には数分かかります...
    既定の UNIX ユーザー アカウントを作成してください。ユーザー名は、Windows のユーザー名と一致する必要はありません。
    詳細: https://aka.ms/wslusers を参照してください
    新しい UNIX ユーザー名を入力してください: alice
    新しい UNIX パスワードを入力してください:
    新しい UNIX パスワードを再入力してください:
    passwd: password updated successfully
    インストールが正常に終了しました
    環境が間もなく開始されます...
    ドキュメントを参照できる場所: https://aka.ms/wsldocs
  4. バージョンを確認してみます。
    $ uname -srvo
    Linux 3.4.0+ #1 PREEMPT Thu Aug 1 17:06:05 CST 2013 GNU/Linux
    
    $ cat /etc/os-release
    NAME="Ubuntu"
    VERSION="14.04.5 LTS, Trusty Tahr"
    ID=ubuntu
    ID_LIKE=debian
    PRETTY_NAME="Ubuntu 14.04.5 LTS"
    VERSION_ID="14.04"
    HOME_URL="http://www.ubuntu.com/"
    SUPPORT_URL="http://help.ubuntu.com/"
    BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
  5. シェルのプロセスは以下の通りです。
    $ pstree -up
    init(1)───bash(2,alice)───pstree(53)
  6. sudo権限のためのホスト名を解決できるように、/etc/hosts を編集します。
    1. 127.0.0.1 localhost
    2. 192.168.x.x your_host_name
    3. ...
  7. システムを最新に更新します。通常のパッケージリポジトリを参照していることが分かります。
    $ cat /etc/apt/sources.list
    deb http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
    deb http://archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse
    deb http://security.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
    
    $ sudo apt-get update
    ...
    $ sudo apt-get upgrade
    ...
  8. ローカルのSSHサーバに接続してみます。ログインシェルはコマンドプロンプトのようです。セットアップ時に、「ユーザー名は、Windows のユーザー名と一致する必要はありません。」とあるのですが、ここではWindowsのアカウントでないとログインできません。ログイン後、試みにbashコマンドを実行してみましたがエラーになります。
    $ ssh -V
    OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.7, OpenSSL 1.0.1f 6 Jan 2014
    
    $ ssh localhost
    alice@localhost's password:
    ...
    Microsoft Windows [Version 10.0.14393]
    (c) 2016 Microsoft Corporation. All rights reserved.
    
    C:\Users\alice>bash
    エラー: 0x80070020
    • note.pngリモートホストにSSHログインした場合、bashの実行がうまく行くときがあります。ただし、エラーになるときもあり動作が一定ではありませんし、正常に実行できても文字化けが発生します。
      Microsoft Windows [Version 10.0.14393]
      (c) 2016 Microsoft Corporation. All rights reserved.
      
      C:\Users\Alice>bash
      ]0;alice@WONDERLAND: /mnt/c/Users/Alicealice@WONDERLAND:/mnt/c/Users/Alice$ cd
      ]0;alice@WONDERLAND: ~alice@WONDERLAND:~$
    • lightbulb.pngちなみに、CygwinMSYS環境ではうまく動作しなかった複数セッションによる接続の共有が、全く問題なく動作します。

アップグレード

Windows10 Fall Creators Update(2017年10月)

  • 既存の BashOnUbuntuOnWindows とMicrosoft Storeからインストールする Ubuntu は併用することが可能ですが、早めに移行するのがよいでしょう。以下は移行の手順です。
  1. BashOnUbuntuOnWindows のデータ(/home 等)をバックアップします。
  2. コマンドプロンプトを管理者として実行し、BashOnUbuntuOnWindowsを削除します。
    >lxrun /uninstall /full
    ...
  3. 不要ならば、開発者モードを無効にします。
  4. Microsoft Storeから Ubuntu をインストールします。
  5. データをリストアします。

Windows10 Creators Update(2017年4月)

  • Windows10 Creators Update ではクリーンインストール時にはUbuntu 16.04 LTSがインストールされるそうですので、インストール済みの14.04をアップグレードしてみます。
  1. まずは、OSを Windows10 Creators Update にアップグレードします。
  2. BashOnUbuntuOnWindows を起動させ、Ubuntuの通常のアップグレードコマンドを実行します。
    $ sudo do-release-upgrade
    ...
  3. システムの状態を確認します。
    $ uname -srvo
    Linux 4.4.0-43-Microsoft #1-Microsoft Wed Dec 31 14:42:53 PST 2014 GNU/Linux
    
    $ cat /etc/os-release
    NAME="Ubuntu"
    VERSION="16.04.2 LTS (Xenial Xerus)"
    ID=ubuntu
    ID_LIKE=debian
    PRETTY_NAME="Ubuntu 16.04.2 LTS"
    VERSION_ID="16.04"
    HOME_URL="http://www.ubuntu.com/"
    SUPPORT_URL="http://help.ubuntu.com/"
    BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
    VERSION_CODENAME=xenial
    UBUNTU_CODENAME=xenial

Tips

デフォルトの umask は 0000

  • 初期化プロセスにLinuxと違いがあるためか、デフォルトの umask が 0000 となっています。これではいろいろと不都合がありますので、~/.profile などで以下のように設定しておくとよいでしょう。
    1. umask 0022

Windowsドライブのマウント

  • バージョン1803以降で検証しています。
  1. 設定ファイルを作成し、特にマウントオプションを指定せずにマウントさせてみます。
    1. /etc/wsl.conf
      1. [automount]
      2. enabled = true
      3. root = /mnt/
      4. mountFsTab = true
    2. Bash起動ユーザの所有ユーザ、グループのフルアクセスでマウントされます。また chown や chmod はできません。note.pngパーミッションを厳格にチェックするプログラム(例えば、ssh)では不便な場合があります。
      $ mount
      rootfs on / type lxfs (rw,noatime)
      ...
      C: on /mnt/c type drvfs (rw,noatime,uid=1000,gid=1000)
  2. 次にメタデータの読み書き可、umask、fmaskをオプションに指定してマウントしてみます。star.pngこの設定がおすすめです。
    1. /etc/wsl.conf
      1. [automount]
      2. enabled = true
      3. root = /mnt/
      4. options = "metadata,umask=22,fmask=11"
      5. mountFsTab = true
    2. Bash起動ユーザの所有ユーザ、グループで、ディレクトリは755、ファイルは644のモードでマウントされます。chown や chmod も可能です。
      $ mount
      rootfs on / type lxfs (rw,noatime)
      ...
      C: on /mnt/c type drvfs (rw,noatime,uid=1000,gid=1000,umask=22,fmask=11,metadata)
  3. さらに同じオプションで手動リマウントすると、rootの所有、noatimeではなくrelatimeでマウントされます。より安全ですがrootの所有では不便な場合もあります。ちなみに一般ユーザでのマウントは不可です。
    $ sudo umount /mnt/c
    $ sudo mount -t drvfs c: /mnt/c -o metadata,umask=22,fmask=11
    $ mount
    rootfs on / type lxfs (rw,noatime)
    ...
    c: on /mnt/c type drvfs (rw,relatime,umask=22,fmask=11,metadata)
  4. 以上により、/etc/wsl.conf にオプションを指定して自動マウントされるのがおすすめです。なお、初回に自動マウントされたものはターミナルの再起動に関係なくマウント状態が維持されます。初回にマウントされていないものはターミナルを再起動しても自動マウントされることはありません。

Windowsドライブ上の秘密情報を参照

  • マウントすればWindowsドライブ上の秘密情報を効率的に参照することが可能です。VeraCrypt?ドライブ等をマウントするとよいでしょう。
  • ただし、Linux環境で妥当に解釈されるようにマウントパーミッションに注意する必要があります。パーミッションが緩い場合、以下のような問題に遭遇することがあります。マウントの時のパーミッションについては前項をご参照ください。
    $ ssh-add
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    Permissions 0666 for '/home/alice/.ssh/id_rsa' are too open.
    It is required that your private key files are NOT accessible by others.
    This private key will be ignored.

Chefで構成管理

  • 折角ですので、Ubuntu on Windowsの構成管理をChefで行ってみます。ただし、このUbuntu環境には直接SSHログインできませんのでknife bootstrapコマンドは利用できません。したがって、個別にChef用のクライアントやノードオブジェクトをセットアップしていきます。
  • Chefは基本的にPull型の構成管理ツールですので、対象ノードにSSHログインできない点がChefの収束動作の障害となることはありません。
  1. ChefWorkstation?上での作業
    1. クライアントおよび対応するノードオブジェクト(特に変える必要はないので同名とします)を追加します。クライアントの秘密鍵はUbuntu環境に後ほど配備します。
      $ knife client create winhost.workgroup -e vi -f ~/work/winhost.workgroup.pem
      ...
      Created client[winhost.workgroup]
      
      $ knife node create winhost.workgroup -e vi
      ..
      Created node[winhost.workgroup]
    2. クライアントに対してノードについての全権を付与します。
      $ sudo chef gem install knife-acl
      ...
      $ knife acl add client winhost.workgroup nodes winhost.workgroup read,update,delete,grant
  2. Ubuntu on Windows環境でのセットアップ
    1. ChefClientをインストールしておきます。
    2. クライアント追加時に保存した秘密鍵を /etc/chef/client.pem に配備し、パーミッションを適切に設定します。
    3. 設定ファイル(/etc/chef/client.rb)を用意します。
      1. log_level        :auto
      2. log_location     STDOUT
      3. chef_server_url  "https://chef.io.example.com"
      4. node_name "winhost.workgroup"
    4. 既存のChefWorkstation?あるいは各ノードにある trusted_certs/ ディレクトリ以下をコピーします。
      $ sudo cp -r trusted_certs/ /etc/chef/
    5. 空実行で確認の上、収束させてみます。Ubuntu on Windows環境のネットワーク情報が取得できないため、一部警告が出ますが動作に支障はありません。
      $ sudo chef-client -W
      ...
      $ sudo chef-client
      Starting Chef Client, version 12.12.15
      [2016-08-20T21:05:54+09:00] WARN: unable to detect ipaddress
      resolving cookbooks for run list: []
      Synchronizing Cookbooks:
      Installing Cookbook Gems:
      Compiling Cookbooks...
      [2016-08-20T21:05:56+09:00] WARN: Node winhost.workgroup has an empty run list.
      Converging 0 resources
      
      Running handlers:
      Running handlers complete
      Chef Client finished, 0/0 resources updated in 03 seconds

トラブルシュート

インストールやBashの実行がハングする

  • Avast Antivirusの影響を受けている場合があります。一時的に各シールドの停止、またはアンインストールしてみて動作を確認します。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-10-07 (日) 17:46:52 (40d)