1.为何须要自动化部署?node
2.Docker的配置管理nginx
3.使用Chef
(1)安装docker-engine软件包示例web
package 'docker-engine' do action :install end
(2)Chef环境部署
A. 注册Chef服务器
Chef服务器包括cookbook、策略、Docker宿主机的元信息docker
B. 搭建工做站
与Chef服务器进行交互。
Chef资源库包含了全部须要交互的信息而且保持与Chef服务器同步,还保存了私有密钥以及其余须要受权的配置文件。bootstrap
Chef开发工具包包含了全部与读取chef-repo中配置信息有关的程序。(去官网下载适合的工具包)vim
C. 启动节点
chef-client负责Chef服务器并下载必要的配置文件,同时将节点配置到预期状态。服务器
knife bootstrap dockerhost 访问网站肯定宿主机已注册成功。
(3)配置Docker宿主机ssh
生成cookbook模板 cd cookbooks chef generate cookbook dockerhost 编辑cookbook cd dockerhost vim metadata.rb name 'dockerhost' maintainer 'The Authors' maintainer_email 'dayun@163.com' license 'all_rights' description 'Installs/Configures dockerhost' long_description 'Installs/Configures dockerhost' version '0.1.0' depends 'apt', '~> 2.7.0' depends 'docker', '~> 0.40.3' 开始安装 berks install 编写Chef recipe vim recipes/default.rb apt_repository 'docker' do uri 'http://apt.dockerproject.org/repo' components %w(debian-jessie main) keyserver 'p80.pool.sks-keyservers.net' key '5813fh193f8834fjqewifj9348j34ifjq' cache_rebuild true end package 'docker-engine' 应用部署 上传Chef cookbook到Chef服务器 berks upload 经过设置run_list应用dockerhost recipe到节点 knife node run_list set dockerhost dockerhost 在dockerhost中执行chef-client ssh dockerhost sudo chef-client
(4)部署Docker容器
解决的问题:工具
建立Chef recipe chef generate recipe . containers (将在dockerhost目录下建立recipes/containers.rb) 拉取Nginx的Docker镜像 在containers.rb文件中加入以下行: docker_image 'nginx' do tag '1.9.3' end 配置宿主机运行容器 在containers.rb中添加以下行: node.set['docker']['container_init_type'] = 'systemd' directory '/usr/lib/systemd/system' docker_container 'nginx' do tag '1.9.3' container_name 'webserver' detach true ort '80:80' end 发布cookbook,经过metadata.rb中指定信息实现 name 'dockerhost' maintainer 'the Authors' maintainer_email 'hdlptz@163.com' license 'all_rights' description 'Installs/Configures dockerhost' long_description 'Installs/Configures dockerhost' version '0.2.0' depends 'apt', '~> 2.7.0' depends 'docker', '~> 0.40.3' 更新Berksfile.lock文件来锁定全部将要上传到Chef服务器的cookbook文件版本 berks install 上传cookbook到Chef服务器 berks upload 添加recipes/containers.rb到Docker宿主机的运行列表 knife node run_list add dockerhost dockerhost::containers 从新运行chef-client来更新Docker宿主机配置 ssh dockerhost sudo chef-client 访问http://dockerhost确认工做正常
云提供商开发工具
部署工具