limitusus’s diary

主に技術のことを書きます

Chefの界隈で起きた事件について日本語で書いておく

これは2019年9月に起きたChef関連OSSの削除騒ぎの経緯を個人的に記録するための記事である。この記事はどちらの立場にも立たず、確認できた記事の内容を記載するにとどめる。

記載している2019年9月24日現在、事態は進行中であり、変更が確認されれば更新していく。

2019/09/17

Chef社とアメリカ合衆国移民・関税執行局(以下ICE)との契約についてのTweetがなされる。

 

2019/09/19

chef-sugar をはじめとしたChef関連のRuby gemがrubygems.orgから削除された。これは元Chef社員(現GCP)のSeth Vargoによるものだった。

これまで(GithubおよびRubygems上では)Vargo個人のgemとして開発されてきたgemの一部について、Chef社から(法的権利を主張する書類とともに)Ruby Centralへ権限移管の要求があり、これをRuby Centralが受け容れたことが発表されている(2019/09/20)。

blog.rubygems.org

これらgemの元々のownerであったVargoはchef-sugerレポジトリで声明を発表しており、Chef社がICEとの$95,500の契約を行ったことが引き金となったとのこと。

github.com

Vargoの主張ではICEが非人道的な扱い、人権の無視、子どもの勾留などを行っており、これらの邪悪な目的のために自身のコードが利用されないようにとChefのエコシステムからコードを削除した旨が記されている。

この後、GoogleAppleAWS等の社員らしき人物らからの賛同のreplyがみられる。

 

Chef CEOのBarry Cristの記事(CristからChef全社員に向けて送信されたメール)によると、この削除によって社内は大きく影響を受けたようである。

blog.chef.io

2019/09/20

この後Chef社側がいくつかの対応を行った旨が発表されている。これは2019/09/20付け、Chef社のCTOであるCorey Scobieによる記事である。

blog.chef.io

Vargoによる削除後、Rubygemsに別名、新バージョンでのgem releaseを行っており、その後名前空間Rubygemsへの要求で取得し、元の名前で過去のリリースを復元させたと記されている。この途中、Authorまで勝手にChef Softwareに書き換えてしまい後ほど元に戻したらしい。

またここではChef社がRuby Centralに提出した権利の帰属を示す書類として、Vargoの雇用日が分かる書類、署名された情報および発明の専有に係る合意の書類であることも記されている。

2019/09/23

さらに2019/09/23付けでCEOのBarry Cristからの記事が出ている。

blog.chef.io

これもCristからChef全社員に向けて送信されたメールの本文とのことであり、Chef社は人権侵害に反対するものであること、多くの社員が今回の契約に反対し、会社を変えようとしていることへの感謝を表明している。

また、今回の契約については履行するものの、来年のICEとの契約更新は行わないことを決め、さらにこの契約による収益は全て家族の分断や勾留の影響を受けた人々への支援へと寄付することも表明された。

HOWTO: release Chef cookbooks

tl;dr

Use stove.

I tried to release a new version of chrony_ii cookbook in the same way I used to, but it did not succeed.

I found that the subcommand I was using is now deprecated, so I determined to use the dedicated tool for that.

Problem I faced

I was releasing public cookbooks with the following command in the cookbook directory (/path/to/cookbooks, not /path/to/cookbooks/my_cookbook):

$ COOKBOOK_NAME=chrony_ii
$ chef exec knife cookbook site share ${COOKBOOK_NAME} -k ~/.chef/limitusus-chefio.pem -u limitusus -o .

The result is FAIL, as follows

Generating metadata for chrony_ii from /var/folders/hb/dzt5s4014wv6_nxjmkkmwd141dqz8q/T/chef-chrony_ii-build20190321-12141-12lhjc1/chrony_ii/metadata.rb
Making tarball chrony_ii.tgz
ERROR: Multipart POST part 'tarball' is corrupt: "\x80\x00\x00\x00\x02\xDB\xFD\x17" is not an octal string

While investigating the cause of this error I found the subcommand "knife cookbook site" is deprecated and we should use knife supermarket instead.

docs.chef.io

I replaced knife cookbook site with knife supermarket but the error unchanged.

stove: packaging & releasing Chef cookbooks

Next I found supermarket document page:

docs.chef.io

then I tried using stove

github.com

It simply worked, and no output (with --no-git, as I have already tagged), but the cookbook is successfully uploaded.

TravisCI upgraded to Xenial, and ChefDK install failed

tl;dr

Should you have a trouble on ChefDK install in TravisCI for Chef cookbook you maintain, you can fix it by fixing .travis.yml

What happened

I received a TravisCI notification that indicates my cookbook's weekly test build failed.

The error says ChefDK installation failed and build stopped then. Here is the log.

gist.github.com

Root Cause

TravisCI seems to have changed the default build environment from Precise to Xenial.

I used chef-current-precise as an apt addon, so the apt source line had turned to be disabled.

How to Fix

Easy. Just fix the apt source line. Unfortunately "chef-current-xenial" is not registered in 

GitHub - travis-ci/apt-source-whitelist: Whitelist of apt sources approved for build environments with restricted sudo for now. I chose to manually write an apt source line for Xenial by TravisCI instruction page, and the build passed.

Actually the diff is very small.

gist.github.com

github.com

複数OSSのContributerになりました

年末ということで1つ記事を書いて今年を締めたいと思います。

インフラエンジニアとしての仕事も6年目となりましたが、この間にITインフラ界隈はオンプレからクラウドへの移行というものが急速に進んできているのを感じています。

そんなわけで仕事ではAWSを主としてクラウド上のインフラを構築することが増えているのですが、Infrastructure as Codeという思想もあり(なくてもやるんですが)TerraformであったりCodenize Toolsを使ったりしていました。

サーバのプロビジョニングはChefを使っています。Codenize ToolsもChefもRuby製なので言語を切り替えなくてよいのが個人的には気に入っています。TerraformがHCLですが…

Codenize ToolsのContributerへ

さて、そんなわけでCodenize Toolsもroadworkerやpiculet、miamなど、いろいろ使っていて、今年に入ってからは機能の小さな修正をいくつかPull requestにしていたのですが、ある時こんなmentionがメンテナからやってきました

f:id:limitusus:20171229222331p:plain

というわけで、現在Codenize ToolsのContributerをやっております。

全てに目を通しているわけでもないですし、基本的には自分が使っていて不便に感じているところを修正していくのがメインの活動になるかなと思いますが、無理のない範囲で貢献していければと思っています。

timezone_iii CookbookのContributerへ

Chefでサーバのtimezoneを設定しようと思うと、そのものズバリの

timezone Cookbook - Chef Supermarket

というcookbookが最初に見付かります。ただこのメンテナがやめてしまったのか、2010年で更新は終了、対応しているのもDebian/Ubuntuのみとなってしまっています。

もちろんこれではいかんと思った人がいて、timezone-iiというforkが生まれました。

timezone-ii Cookbook - Chef Supermarket

ところがこれまた2015年で更新が止まってしまっていて、Chef13では動きません。

こんなIssueが作成されており、読んでみるとメンテナのLarry Gilbert氏が死去してしまったようです(Facebookも追悼アカウントになっています)。

github.com

timezone-iiを誰も直接引き継ぐことができず、やむをえず作られたのがtimezone_iiiです。

timezone_iii Cookbook - Chef Supermarket

Cookbook名にhyphenを使わないのが推奨というのもあり、いろいろ改善されています。

何より活発にメンテナンス活動がされているようだったのでこれを利用することにし、例によって自分で不満なところをPull requestにしてぶつけていきました。

CentOSのwhyrunを綺麗にした

github.com

ちょっとテストを書いたり、Debianのwhyrunを綺麗にした

github.com

#14のPRでメンテナにCollaboratorにならない?って言われました

f:id:limitusus:20171229224018p:plain

というわけでtimezone_iiiのv1.1.5を先ほどsupermarketにアップロードしました。

 

そんなわけで、Codenize Toolsやtimezone_iiiへの要望があればissueなりTwitterなりでご連絡ください。

timezone_iiiにも日本語で書いていただいて構いません。メンテナ向けに翻訳します。そういうのもcollaborationだと思ってます。

今年のOSSへのcommitはさすがにこれで打ち止めですが、来年も機会があればやっていこうと思います。

 

ではでは。


追記

timezone_iiiのv1.1.6までリリースしちゃいました


2019/03/22追記

timezone_iiiはChef 14.6以降はdeprecatedとなりました。これはtimezone resourceがChefで直接扱われるようになったためです

CircleCIをv1からv2に上げたら4倍速くなった話

tl;dr

今までRubyのテストをCircleCI v1で行ってきましたが、v2がGAになったことを受けてv2への移行を行いました。

結果、それまで2分40秒ほどかかっていたテストが40秒台で完了できるようになりました。この過程と効果について紹介します。

続きを読む

terraformのバージョンを上げようとしたらハマったのでメモしておく

terraform 0.9.11を使っていたが、あるとき0.10系がリリースされたのでバージョンアップを試みたところ、かなりハマってしまったのでメモ。

tl;dr

terraform init -backend-config=/path/to/config -reconfigure

続きを読む