我在樱花云上开发了可以使用的Test-Kitchen驱动程序

厨房 :: 司机 :: 樱花云 安静地发布了。

Test-Kitchen的1.4版本及更高版本,可以将与虚拟机获取相关的处理作为独立的模块来处理。

    Test-Kitchenについては: test-kitchenのつかいかた

之前,由于需要一个性能不错的Debian服务器用于工作,我想在Sakura云上临时启动一台。
由于打开控制面板很麻烦,所以我决定编写Test-Kitchen的驱动程序。

Test-Kitchen的驅動程序(負責創建和刪除虛擬機)。

只要连接到已采购服务器的方法仅限于SSH或WinRM,则v1.4或更高版本的驱动程序

    • 作る時: 作って、ID(クラウドベンダ側で発行)とSSH or WinRMで接続するためのアドレスをstateに入れる

 

    消す時: IDを控えてあるので、それに従って削除する

在我们刚刚做的这部分中,相关的是这个地方。

...

      def create(state)
        server = create_server
        state[:id] = server.id
        state[:hostname] = server.interfaces.first["IPAddress"]
      end

      def destroy(state)
        destroy_server(state[:id]) if state[:id]
      end

...

司机的角色只有这些。因为有雾灯,所以在这种情况下很轻松。

使用的时候

如果SAKURACLOUD_API_TOKEN和SAKURACLOUD_API_TOKEN_SECRET存在于环境变量中,系统会自动使用它们,所以可以将它们写在YAML文件中。

---
driver:
  name: sakuracloud
  sshkey_id: <%= ENV['SAKURA_SSHKEY_ID'] %>
  api_zone: tk1a

transport:
  username: root
  ssh_key: <%= ENV['SAKURA_SSHKEY_PATH'] %>

provisioner:
  name: shell

verifier:
  name: shell

platforms:
  - name: debian8
    driver:
      sourcearchive: 112700890487
      serverplan: 4004
      diskplan: 4
      size_mb: 20480
  - name: ubuntu14
    driver:
      serverplan: 4004
      diskplan: 4
      size_mb: 20480
    transport:
      username: ubuntu


suites:
  - name: default
    run_list:
    attributes:

提供者 => 命令行,会将当前的bootstrap.sh传输并执行。
验证者 => 命令行,如果省略会以本地的/bin/true命令结束。
暂时我想在登录状态下进行交互测试,所以这样就可以了。

通过查看列表,可以发现Driver是Sakuracloud。

$ kitchen list
Instance          Driver       Provisioner  Verifier  Transport  Last Action
default-debian8   Sakuracloud  Shell        Shell     Ssh        <Not Created>
default-ubuntu14  Sakuracloud  Shell        Shell     Ssh        <Not Created>

开启虚拟机

好的,这次我想改变glibc的重建选项来尝试。所以暂时只需要你帮我做好准备,我会把在converge上执行的脚本放在那里。

sudo mkdir -p /usr/local/deb/glibc
cd /usr/local/deb/glibc

sudo apt-get update && apt-get install -y \
cmake dpkg-dev bison libbison-dev ruby \
&& apt-get build-dep -y glibc --fix-missing \
&& apt-get source -y glibc
$ kitchen converge debian
-----> Starting Kitchen (v1.4.2)
-----> Creating <default-debian8>...
[fog][WARNING] Create Server
[fog][WARNING] Create Volume
[fog][WARNING] Waiting disk until available
.[fog][WARNING] Modifing disk
       Finished creating <default-debian8> (1m31.15s).
-----> Converging <default-debian8>...
       Preparing files for transfer
       Preparing script
       [SSH] connection failed, retrying in 1 seconds (#<Timeout::Error: execution expired>)
       Transferring files to <default-debian8>
Get:1 http://security.debian.org jessie/updates InRelease [63.1 kB]
Get:2 http://security.debian.org jessie/updates/main Sources [109 kB]          
Ign http://dennou-h.gfd-dennou.org jessie InRelease     

....

-----> Kitchen is finished. (2m58.76s)

我将登录并尝试各种功能。

$ kitchen login debian

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

...

root@localhost:~#

废弃虚拟机

那我们将抹去它吧。

$ kitchen destroy debian
-----> Starting Kitchen (v1.4.2)
-----> Destroying <default-debian8>...
       Finished destroying <default-debian8> (0m19.32s).
-----> Kitchen is finished. (0m19.40s)

好的,它消失了。

常规情况下,可以使用各种配置管理工具。

广告
将在 10 秒后关闭
bannerAds