zoukankan      html  css  js  c++  java
  • ansible 剧本进阶 角色

    主要内容:

    playbook(剧本)

    roles

    一.查看收集到的信息

    ansible cache -m setup

    setup (需要了解的参数)

    ansible_all_ipv4_addresses # ipv4的所有地址
    ansible_all_ipv6_addresses # ipv6的所有地址
    ansible_date_time # 获取到控制节点时间
    ansible_default_ipv4 # 默认的ipv4地址
    ansible_distribution # 系统
    ansible_distribution_major_version # 系统的大版本
    ansible_distribution_version # 系统的版本号
    ansible_domain #系统所在的域
    ansible_env #系统的环境变量
    ansible_hostname #系统的主机名
    ansible_fqdn #系统的全名
    ansible_machine #系统的架构
    ansible_memory_mb #系统的内存信息
    ansible_os_family # 系统的家族
    ansible_pkg_mgr # 系统的包管理工具
    ansible_processor_cores #系统的cpu的核数(每颗)
    ansible_processor_count #系统cpu的颗数
    ansible_processor_vcpus #系统cpu的总个数=cpu的颗数*CPU的核数
    ansible_python # 系统上的python
    ansible cache -m setup -a 'filter=*processor*' # 用来搜索

    补充内容(正则表达式)

    * 匹配数量,表示0或者多次
    
    ? 匹配数量,表示0或者1次
    
    . 除换行符以外的所有字符
    
    + 至少一次
    
    [123abc] 匹配内容,or
    
    () 分组
    
    {m} 次数,出现m次
    
    {m,} 至少m次
    
    {m,n}出现m-n次
    
    a*.b

    二.条件判断

    • 不同的系统

    • 不同的版本

    • 不同的环境

    • 不同的用户

    - hosts: db
      remote_user: root
      tasks:
      - name: createfile
        copy: content="大弦嘈嘈如急雨" dest=/tmp/a.txt
        when: a=="3"
      - name: cratefile
        copy: content="小弦切切如私语" dest=/tmp/a.txt
        when: a=="4"

    扩展:Ubuntu 安装包的方式是apt-get

    tags(传递标签)

    - hosts: db
      tasks:
      - name: wadong
        tieqiao: wadong
      - name: tk
        dong: tk
        tags: tk
    - hosts: web
      tasks:
      - name: installnginx
        yum: name=nginx
      - name: copyfile
        copy: src=/etc/nginx/nginx.conf dest=/etc/nginx/nginx.conf
        tags: copyfile
      - name: start
        service: name=nginx state=started
        
    ansible-playbook -t copyfile p7.yml 

    循环 with_item

    一次性创建多个

    - hosts: gb
      tasks:
      - name: gbqc
        dong: {{ item }}
        with_items:
        - qbqc
        - cyf
        - ssfj
        
    - hosts: web
      tasks:
      - name: crateuser
        user: name={{item}}
        with_items:
        - alex20
        - alex21
        - alex22
    ~            
    - hosts: web
      tasks:
      - name: crateuser
        user: name={{item}}
        with_items:
        - alex30
        - alex31
        - alex32
      - name: crategroup
        group: name={{item}}
        with_items:
        - wulaoshi20
        - wulaoshi21
        - wulaoshi22
    ~                

    嵌套循环

    - hosts: web
      tasks:
      - name: crategroup
        group: name={{item}}
        with_items:
        - wulaoshi30
        - wulaoshi31
        - wulaoshi32
      - name: createuser
        user: name={{item.name}} group={{item.group}}
        with_items:
        - {'name':alex40,'group':wulaoshi30}
        - {'name':alex41,'group':wulaoshi31}
        - {'name':alex42,'group':wulaoshi32}
        

    template:

    jinja2

     

    redis安装
    - hosts: web tasks: - name: installredis yum: name=redis - name: copyfile template: src=/etc/redis.conf dest=/etc/redis.conf - name: start service: name=redis state=started 配置文件: bind {{ ansible_default_ipv4.address }}

    copy和tamplate的区别

    • copy模块不替代参数

    • template模块替代参数

    - hosts: web
      tasks:
      - name: installredis
        yum: name=redis
      - name: copyfile
        template: src=redis.conf dest=/etc/redis.conf
      - name: start
        service: name=redis state=started

    ps:写相对路径: 在当前目录下新建一个templates目录,然后把文件放在templates目录里面

    handlers(修改配置文件时用)

    - hosts: web
      tasks:
      - name: installredis
        yum: name=redis
      - name: copyfile
        template: src=redis.conf dest=/etc/redis.conf
        tags: copyfile
        notify: restart
      - name: start
        service: name=redis state=started
      handlers:
      - name: restart
        service: name=redis state=restarted

    回顾 playbook

    传参

    条件判断 when

    循环 with_items item

    嵌套循环 字典 通过点来取值

    标签 tags -t 来传递标签

    模板 template

    handlers 不会执行, notify

    roles

    • 目录清晰

    • 可以互相调用

    roles文件夹

    文件夹里面是要创建的每一个角色,每一个角色一个文件夹

    每一个角色里面都有tasks(必须的),templates,files,handlers,vars目录

    每个目录都要有main.yml文件,通过import_tasks来调用

    其中templates文件夹中的文件可以通过相对路径来调用

    其中files文件夹中的文件是否可以通过相对路径来调用?

    mysql my

    mariadb

    Hadoop 大数据

    setenforce 0 #用来临时关闭selinux
    iptables -F # 临时关闭防火墙
    /etc/selinux/config  # 永久关闭

     

     

    用roles 来安装nginx+uwsgi+mariadb + redis

     

     

  • 相关阅读:
    给Linux添加google搜索命令
    安卓设置脚本开机自启动
    重读The C programming Lanuage 笔记四:c预处理
    重读The C programming Lanuage 笔记三:简单计算器程序
    重读The C programming Lanuage 笔记二:运算符优先级
    重读The C programming Lanuage 笔记一:类型转换
    【 转】 C/C++结构体和联合体的区别
    python 柯里化 和装饰器
    qq bug 一个
    网站收集
  • 原文地址:https://www.cnblogs.com/RootEvils/p/10415647.html
Copyright © 2011-2022 走看看