ansible基础语法介绍

摘要:
角色介绍了角色根据已知的文件结构自动加载tasksandlerstemplatesvarsfilesroles下的目录。目录中只能写入相关的任务或处理程序。然后使用playbook文件调用相关角色,以两种方式创建角色。1.手动创建相关目录mkdirredis/{tasks,handlers,templates,vars,files}-pv2.ansible-gal

Roles介绍

        roles基于一个已知的文件结构来自动加载tasks handlers templates vars files

        roles下的目录里面只能写相关的tasks或者handlers。然后再通过playbook文件来调用相关roles 

        创建角色的两种方式
              1.手动创建相关目录
                  mkdir redis/{tasks,handlers,templates,vars,files} -pv
               2.ansible-galaxy init redis roles
                  redis是角色名称

       ansible基础语法介绍第1张

       ansible基础语法介绍第2张

ansible galaxy 介绍

       galaxy是一个免费网站,类似于github网站,网站上基本都是共享的roles角色。从Galaxy下载roles角色是快速启动自动化项目方式之一

       ansible提供了ansible-galaxy命令行工具,可以使用init search install remove等操作

      1.ansible-galaxy search nginx
      2.ansible-galaxy install nginx
         把角色安装包下载到/root/.ansible/roles目录下

ansible角色调试

     ansible基础语法介绍第3张

    ansible-playbook -i hosts site.yml -vvv

       ansible基础语法介绍第4张

ansible playbook输出所有节点信息

     - name: "get all nodes status"
       shell: "supervisorctl status"
       register: result
       tags: checknodes

   - name: "show all node status"
    debug:
       msg: "{{ result }}"
    tags: checknodes

ansible命令输出批量节点信息

      ansible只对hosts文件中的[group]进行分组操作,没有角色这个对象

      ansible -i hosts all -m shell -a "supervisorctl status"    -i hosts all 在hosts文件中必须定义一个all组

     ansible基础语法介绍第5张

     site.yml是ansible-playbook命令才会被定义.ansible命令只要定义hosts文件即可

     ansible基础语法介绍第6张

     ansible-playbook -i hosts site.yml  这样就相当于在all的节点上执行命令

    ansible > hosts文件 > 具体节点

    ansible-playbook > site.yml > hosts文件 > 具体节点

  ansible模块同时管理多个service

       ansible基础语法介绍第7张

        ansible基础语法介绍第8张

       使用循环列表的指定服务名称方式启停服务

ansible拷贝整个目录下的文件

ansible基础语法介绍第9张ansible基础语法介绍第10张
- name: "copy the flink-lib jars"
  copy: src=../../common/packages/flink/lib/  dest="{{ taishi_dir }}/tmp/flinklib/" owner={{ taishi_user }} group={{ taishi_user }} mode=0755
  tags: flink-master-jar

- name: show the jars in the lib 
  command: ls {{ taishi_dir }}/tmp/flinklib/
  register: dir_out 
  tags: flink-master-jar

- name: "upload the flink-lib jars" 
  copy: src=/{{ taishi_dir }}/tmp/flinklib/{{item}} dest={{ taishi_dir }}/flink/flink-1.12.2/lib/{{item}} owner={{ taishi_user }} group={{ taishi_user }} mode=0755
  with_items: "{{ dir_out.stdout_lines }}"
  tags: flink-master-jar
上传整个目录下子文件
ansible基础语法介绍第11张ansible基础语法介绍第12张
- name: "supervisor start flink"
  shell: "supervisorctl update"
  ignore_errors: True
  tags: flink-master

- name: "check flink master"
  wait_for:
    port: 8081
    delay: 10
    timeout: 300
  tags: flink-master-jar

- name: "upload flink web jar"
  shell: "curl -F 'file=@/tmp/analysis-entrypoint.jar' http://{{ groups['flink-master'][0] }}:8081/jars/upload"
  ignore_errors: True
  tags: flink-master-jar
shell上传jar包

 自动实现上传jar包

ansible使用ssh用户名和密码登录主机

       1.不再通过ssh免密登录,而是直接通过hosts中配置用户名和密码来部署

ansible基础语法介绍第13张ansible基础语法介绍第14张
[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False

[defaults]
host_key_checking = False
                          
ansible.cfg
ansible基础语法介绍第15张ansible基础语法介绍第16张
[nfsserver]
192.168.30.105

[nfsclient]
192.168.30.105

[elastic-master]
192.168.30.105


[elastic]
192.168.30.105


[mysql]
192.168.30.105

[redis-master]
192.168.30.105

[zookeeper]
192.168.30.105

[kafka]
192.168.30.105

[flink-master]
192.168.30.105


[app-master]
192.168.30.105

[Tlog]
192.168.30.105

[nginx]
192.168.30.105


[monitor]
192.168.30.105

[all]
192.168.30.105


[all:vars]
ansible_ssh_user=admin
ansible_ssh_pass=123456
主机清单文件

      ansible基础语法介绍第17张

    2.清空受控端主机known_hosts文件

      ansible基础语法介绍第18张

    3.执行部署

         ansible-playbook -i hosts_userpasswd site_standalone.yml

      ansible基础语法介绍第19张

      ssh无免密登录部署       

ansible把多个主机组合并成一个主机组

     ansible基础语法介绍第20张

     设置hosts文件父分组和子分组

ansible基础语法介绍第21张ansible基础语法介绍第22张
[flink-master]
192.168.30.105


[flink-worker]
192.168.30.110

[flinkcluster:children]
flink-master
flink-worker
hosts

   循环遍历合并后分组主机

ansible基础语法介绍第23张ansible基础语法介绍第24张
{% set flinkhosts = [] %} 
{% for host in groups["flinkcluster"] %} 
{{ flinkhosts.append(host | string+":9213")}} 
{{ flinkhosts.append(host | string+":9214")}} 
{% endfor %}
      - targets: {{ flinkhosts | to_json }}
        labels:
          group: 'flink-exporter'
templates.j2

      ansible基础语法介绍第25张

ansible基础语法介绍第26张ansible基础语法介绍第27张
{% set hosts = [] %} 
{% for host in groups["all"] %} 
{{ hosts.append(host|string+":9100") }} 
{% endfor %}
      - targets: {{ hosts | to_json }} 
        labels:
          group: 'node-exporter'
  - job_name: 'system_app'
    scrape_interval: 60s 
    static_configs:
      - targets: ['{{ groups["elastic-master"][0] }}:9114']
        labels:
          group: 'elastic-exporter'
{% set flinkhosts = [] %} 
{% for host in groups["flinkcluster"] %} 
{{ flinkhosts.append(host | string+":9213")}} 
{% if host == groups["flink-master"][0] %}
{{ flinkhosts.append(host | string+":9214")}} 
{% endif %}
{% endfor %}
      - targets: {{ flinkhosts | to_json }}
        labels:
          group: 'flink-exporter'
模板遍历并嵌套判断

    ansible基础语法介绍第28张

 ansible调试jinjia2语法

     ansible基础语法介绍第29张

    ansible-playbook -i hosts --tags monitor-test2 site.yml

ansible playbook变量定义嵌套

    ansible基础语法介绍第30张

     es_path_data:  "{{ taishi_dir }}/es-cluster/data"
     es_path_logs:  "{{ taishi_dir }}/es-cluster/logs"

免责声明:文章转载自《ansible基础语法介绍》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MarkDown基本操作抓取网页数据(金融股市实时数据)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

RabbitMQ用户角色及权限控制 -2

1.RabbitMQ的用户角色分类: none、management、policymaker、monitoring、administrator none不能访问 management plugin management 用户可以通过AMQP做的任何事情外 列出自己可以通过AMQP登入的virtual hosts 查看自己的virtual hosts中...

高可用web集群的搭建与监控

介绍:搭建一个高可用的web集群项目,能承受高并发的请求,任何一台服务器的退服不影响整个集群的运作,并且能对各个服务器的状态进行监控 运用技术:   CentOS Linux release 8.0.1905 (Core)、nginx/1.17.9、ansible/2.9.9、nfs-utils/1:2.3.3-26、zabbix/4.4.6、keepal...

ubuntu下DNS原理及相关设置

1.DNS原理分析如下: 当 DNS 客户机需要查询程序中使用的名称时,它会查询本地DNS 服务器来解析该名称。客户机发送的每条查询消息都包括3条信息,以指定服务器应回答的问题。● 指定的 DNS 域名,表示为完全合格的域名 (FQDN) 。● 指定的查询类型,它可根据类型指定资源记录,或作为查询操作的专门类型。● DNS域名的指定类别。对于DNS 服务器...

Flink初探-为什么选择Flink

本文主要记录一些关于Flink与storm,spark的区别, 优势, 劣势, 以及为什么这么多公司都转向Flink. What Is Flink 一个通俗易懂的概念: Apache Flink 是近年来越来越流行的一款开源大数据计算引擎,它同时支持了批处理和流处理.这是对Flink最简单的认识, 也最容易引起疑惑, 它和storm和spark的区别在哪里...

MySQL主从报错1872 Slave failed to initialize relay log info structure from the repository【原创】

一台MySQL服务器重启后发现主从复制报错 Last_Errno: 1872 Last_Error: Slave failed to initialize relay log info structure from the repository   mysql> show slave statusG; ************************...

Ansible-doc里面的一些简单模块使用

ansible-doc  -l |grep 模块名                  //模块搜索 ansible-doc  模块名  =============>    /EXAMPLE      //查看帮助 针对于普通用户在命令行执行ansible命令:        ansible 主机或主机集合   -m    模块  -u  普通用户 ...