设为首页 收藏本站
查看: 1213|回复: 0

[经验分享] 使用ansible安装docker以及docker-compose

[复制链接]

尚未签到

发表于 2018-1-2 23:40:03 | 显示全部楼层 |阅读模式
  环境三台centos7主机:
  master:192.168.101.14,node1:192.168.101.15,node2:192.168.101.19,利用master节点为两个node节点安装docker以及docker-compose
  首先在master上安装ansible,这里采用yum安装(epel中包含ansible,安装之前添加epel源)
  ansible基于ssh密钥认证,于是使用master给两个node进行ssh认证:
  

# ssh-keygen -t rsa -P ''  
#
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.101.15  
#
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.101.19  

  给两个node节点配置hosts:
  

[iyunv@docker ansible]# egrep -v "^#|^$" hosts  
[container_nodes]
  

192.168.101.15  
192.168.101.19
  

  于是准备工作完成,开始编写playbook:
  

[iyunv@docker ansible]# tree  
.
  
├── ansible.cfg
  
├── hosts
  
├── roles
  
│   ├── docker
  
│   │   ├── files
  
│   │   ├── handlers
  
│   │   │   └── main.yaml
  
│   │   ├── meta
  
│   │   ├── tasks
  
│   │   │   └── main.yaml
  
│   │   ├── templates
  
│   │   │   └── daemon.json.j2
  
│   │   └── vars
  
│   │       └── main.yaml
  
│   └── docker
-compose  
│       ├── files
  
│       │   └── docker
-compose-Linux-x86_64  
│       ├── handlers
  
│       ├── meta
  
│       ├── tasks
  
│       │   └── main.yaml
  
│       ├── templates
  
│       └── vars
  
│           └── main.yaml
  
└── work_dir
  ├── install_docker
-compose.retry  ├── install_docker
-compose.yaml  ├── install_docker.retry
  └── install_docker.yaml
  

  将上面的树形目录进行分解,查看docker这个role的内容:
  

[iyunv@docker docker]# tree  
.
  
├── files         必要的一些需要的文件存放目录
  
├── handlers
  
│   └── main.yaml    handler处理的动作
  
├── meta          元数据存放的一些依赖
  
├── tasks
  
│   └── main.yaml    主要执行的任务
  
├── templates
  
│   └── daemon.json.j2      一些配置文件的存放
  
└── vars
  └── main.yaml          变量设置的存放目录
  

  查看tasks/main.yaml:
  

[iyunv@docker docker]# cat tasks/main.yaml  

- name: install required packagesyum:  name:
"{{ item }}"           需要进行安装的一些包名  state: present               安装的包的状态
  with_items:                    对应上面的item(可以循环操作)
- yum-utils- device-mapper-persistent-data- lvm2  

  

- name: add docker repo to /etc/yum.repos.d  shell:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo  
  register: result              将shell的操作结果注册为result
  

  
- name: install docker-ce
  yum:
  name: docker-ce
  state: present
  when: result|success           如果上面的result为success,则该任务执行
  

  
- name: create /etc/docker
  file:
  path: "{{ docker_config_dir }}"          利用file模块进行创建一个目录,引用变量
  state: directory
  

  
- name: start docker service
  systemd:                         centos7开启服务,添加到启动项
  name: docker
  state: started
  enabled: true
  

  
- name: provide docker-ce configfile
  template:
  src: daemon.json.j2                 提供配置文件
  dest: /etc/docker/daemon.json
  notify: restart docker                  配置文件修改了触发通知机制,提醒handler
  

  查看handlers/main.yaml:
  

[iyunv@docker docker]# cat handlers/main.yaml  

- name: restart docker  systemd:
  name: docker
  state: restarted            触发机制后,将服务进行重启
  enabled:
true  

  查看变量的设置:
  

[iyunv@docker docker]# cat vars/main.yaml  
docker_config_dir:
/etc/docker  

  查看template的j2文件:
  

[iyunv@docker docker]# cat templates/daemon.json.j2  
{
"registry-mirrors": ["https://cbd49ltj.mirror.aliyuncs.com"]  
}
  

  上面的展示了docker这个角色的任务,变量,配置文件,触发条件,但是这个角色作用在哪个环境,哪个节点并没有说明,于是工作目录就是解决这个问题的:
  

[iyunv@docker work_dir]# tree  
.
  
├── install_docker
-compose.retry  
├── install_docker
-compose.yaml  
├── install_docker.retry
  
└── install_docker.yaml
  

  查看docker的work_dir:
  

[iyunv@docker work_dir]# cat install_docker.yaml  

- hosts: container_nodes         对应hosts配置文件的两个节点  remote_user: root              执行使用root用户
  roles:
- docker                  针对的role名称  

  使用--syntax-check进行语法验证:
  

[iyunv@docker work_dir]# ansible-playbook install_docker.yaml --syntax-check  

  
playbook: install_docker.yaml
  

  使用如下命令进行执行playbook:
  

[iyunv@docker work_dir]# ansible-playbook install_docker.yaml  

  下面查看另一个角色docker-compose:
  

[iyunv@docker docker-compose]# tree  
.
  
├── files
  
│   └── docker
-compose-Linux-x86_64           docker-compose的二进制文件  
├── handlers
  
├── meta
  
├── tasks
  
│   └── main.yaml
  
├── templates
  
└── vars
  └── main.yaml
  

  由于docker-compose并不需要像服务启动,没有handler机制,查看task:
  

[iyunv@docker docker-compose]# cat tasks/main.yaml  

- name: copy docker-compose-Linux-x86_64 to /usr/local/bin  copy:
  src: ..
/files/docker-compose-Linux-x86_64              这里可以使用相对路径,可以使用绝对路径  dest:
"{{ docker_compose_dir }}/docker-compose-Linux-x86_64"  

  
- name: install docker-compose
  shell: cd "{{ docker_compose_dir }}" && mv docker-compose-Linux-x86_64 docker-compose && chmod +x docker-compose
  

  查看变量的设置:
  

[iyunv@docker docker-compose]# cat vars/main.yaml  
docker_compose_dir:
/usr/local/bin  

  最后执行的work_dir下面的install_docker-compose:
  

[iyunv@docker work_dir]# cat install_docker-compose.yaml  

- hosts: container_nodes  remote_user: root
  roles:
- docker-compose  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-430996-1-1.html 上篇帖子: [转] Ansible 自动化运维工具 下篇帖子: centOS7 安装ansible
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表