ansible运维自动化之三---ansible-playbook入门及进阶

ansible-playbook入门及进阶
ansible帮助:ansible官方手册
Ansible-console

cd进入相应设置的组,在里面执行任何命令都是针对所有主机,非常便捷
ansible运维自动化之三---ansible-playbook入门及进阶_第1张图片

ansible-console -h
root@web (2)[f:5]$ copy src=/tmp/console.txt dest=/tmp

ansible-galaxy安装删除模块用
在官网找到我们需要的模块直接下载安装即可,默认这些都是在github上的,我们可以写一些遵守ansible的约定通过即可显示。

https://galaxy.ansible.com/explore#/ 
ansible-galaxy install DavidWittman.redis
ansible Yaml语法简介

yaml: yaml ain’t a markup language
yaml的意思其实是:yet another markup language,但为了强调这种语言以数据作为中心,而不是以标记语言为中断,而用反向缩略语重命名
1.首先以“—”(3个减号)开始,且需顶行首写
2.次行开始正常playbook的内容,但笔者一般建议写明该playbook的功能
3.使用#号注释代码
4.缩进必须是统一的,不能空格和tab混用
5.缩进的级别也必须是一致的,同样的缩进代表同样的级别,程序判别配置的级别是通过缩 进结合换行来实现的
6.yaml文件内容和linux系统大小写判断方式保持一致,是区别大小写的,k/v的值均需大小 写敏感
7.k/v的值可同行写也可换行写,同行使用:分隔,换行写需要以-分隔
8.一个完整的代码块功能需最少元素需包括 name:task
9.一个name只能包括一个task

cd /root/files
cp /etc/nginx/nginx.conf  /root/files
cd /etc/ansible/roles
vim nginx.yml
---

- hosts: web  #针对哪些组的主机操作
  remote_user: root
  tasks:
  - name: install Nginx
    yum: name=nginx state=latest
  - name: configure Nginx
    copy: src=/root/files/nginx.conf dest=/etc/nginx/nginx.conf backup=yes
  - name: start nginx
    service: name=nginx state=started
    
ansible-playbook -C nginx.yml #测试语法是否执行通过
ansible-playbook nginx.yml

[root@longma-node13-808 roles]# ansible-console
Welcome to the ansible console.
Type help or ? to list commands.

root@all (3)[f:5]$ cd web
root@web (3)[f:5]$ ps -aux |grep nginx

handlers:当我们某个任务集触发到某个代码库,那么这个代码块才会去执行,比如重启
某个服务,不是每次都重启服务,而是当配置文件更改的时候才会去重启服务

---

- hosts: web
  remote_user: root
  tasks:
  - name: install Nginx
    yum: name=nginx state=latest
  - name: configure Nginx
    copy: src=/root/files/nginx.conf dest=/etc/nginx/nginx.conf backup=yes
    notify: restart nginx
#- name: start nginx
#    service: name=nginx state=started

  handlers:
  - name: restart nginx
    service: name=nginx state=restarted


[root@longma-node13-808 roles]# ansible-console
Welcome to the ansible console.
Type help or ? to list commands.

root@all (3)[f:5]$ cd web
root@web (3)[f:5]$ ss -ntl |grep 808


Playbook核心元素
  • Hosts: 运行指定任务的目标主机
  • Tasks: 任务列表
  • Varniables: 变量
  • Templates: 模板
  • Handlers: 由特定条件触发的任务,监控资源改变时才会触发改变
  • Roles: Playbook的按固定目录结构组成
示例2:创建用户
---

- hosts: web
  remote_user: root
  tasks:
  - name: added user1
    user: name=user1 system=yes uid=307
  - name: added user2
    user: name=user2 system=yes uid=308

ansible-playbook user.yml

示例3:使用变量
---

- hosts: web
  remote_user: root
  tasks:
  - name: added user1
    user: name=user1 system=yes uid=307
  - name: added user2
    user: name=user2 system=yes uid=308
  - name: added {{ userx }}
    user: name={{ userx }} uid={{ userid }}

ansible-playbook -e userx=user3 -e userid=10080 user.yml

示例4:使用tags
---

- hosts: web
  remote_user: root
  tasks:
  - name: added user1
    tags: autouser
    user: name=user1 system=yes uid=307
  - name: added user2
    tags: autouser
    user: name=user2 system=yes uid=308
  - name: added {{ userx }}
    tags: manueuser
    user: name={{ userx }} uid={{ userid }}



[root@longma-node13-808 roles]# ansible-playbook -t autouser user.yml 
[root@longma-node13-808 roles]# ansible-playbook -t manueuser -e userx=user4 -e userid=10099 user.yml

你可能感兴趣的:(ansible)