ansible常用模块-3

2021/5/19 18:56:47

本文主要是介绍ansible常用模块-3,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

16. template

- name: Network config
  template: src=network.sh.j2 
dest=/tmp/network.sh
owner: root
group: root
mode: 0644
 
  template: src={{ item.src }}  dest={{ item.dest }}
  with_items:
    - { src: 'confxml_xml.j2',dest: '/opt/sersync_installdir_64bit/sersync/conf/confxml.xml'}
    - { src: 'sersync_sh.j2',dest: '/tmp/sersync.sh' }


17. pip

实例1
ansible quanbu -m pip -a "name=django state=present"
实例2:   
- hosts: jumpserver
  tasks:
    - name: pip install /opt/jumpserver/requirements
      pip:
        requirements: /opt/jumpserver/requirements/requirements.txt
        virtualenv: /opt/py3   ##加载到那个环境


18. mysql

使用此模块,需要在mysql服务器上先下载MySQL-python
1.启动数据库
ansible 192.168.56.11 -m service -a "name=mariadb state=started enabled=yes" 
 
2.创建数据库
ansible 192.168.56.11 -m mysql_db -a "name=zabbix state=present encoding=utf8" 
 
3.创建数据库用户并授权
ansible 192.168.56.11 -m mysql_user -a "name=zabbix password=zabbix priv='zabbix.*:ALL,GRANT' state=present" 
 
cd /usr/share/doc/zabbix-server-mysql-3.0.8 
zcat create.sql.gz >/root/create.sql 
4.导入数据库。从sql文件中导入
ansible 192.168.56.11 -m mysql_db -a "name=zabbix state=import target=/root/create.sql" 
 
5.给root用户创建密码
 - name: update mysql root password for all root accounts 
 mysql_user: name=root host={{ item }} password={{ mysql_root_db_pass }} 
 with_items: 
 - "{{ ansible_hostname }}"
 - 127.0.0.1 
 - ::1 
 - localhost 
 when: ansible_hostname != 'localhost' 
 
6.给root用户设置密码
- hosts: ceshi1
  tasks:
    - name: update mysql root password for all root accounts
      mysql_user: name=root  password=mysql


19. iptables

chain:指定什么表
protocol:什么协议
destination_port:目的地端口
source=原网段
jump:动作
-m state --state <状态>
有数种状态,状态有:
▪ INVALID:无效的封包,例如数据破损的封包状态
▪ ESTABLISHED:已经联机成功的联机状态;
▪ NEW:想要新建立联机的封包状态;
 
ansible dbserver -m iptables -a "chain=INPUT protocol=tcp match=tcp destination_port=80 source=110.112.11.1 jump=ACCEPT"
添加一条tcp的80端口
ansible 192.168.56.11 -m iptables -a "action=insert chain=INPUT jump=ACCEPT protocol=tcp destination_port=80" 
添加一条udp的69端口
ansible 192.168.56.11 -m iptables -a "action=insert chain=INPUT jump=ACCEPT protocol=udp destination_port=69" 
生产环境配置防火墙例子:
- name: Config accept tcp rule insert to elasticsearch iptables 
iptables: action=insert chain=INPUT jump=ACCEPT protocol=tcp destination_port={{ item }} 
with_items: 
- "{{ elasticsearch_iptables_accept_tcp_port }}" 
tags: install_config_elasticsearch 
- name: Insert tcp rule to /etc/sysconfig/iptables 
lineinfile: 
path: /etc/sysconfig/iptables 
insertafter: '^:OUTPUT ACCEPT ' 
line: '-A INPUT -p tcp -m tcp --dport {{ item }} -j ACCEPT' 
with_items: 
- "{{ elasticsearch_iptables_accept_tcp_port }}" 
tags: install_config_elasticsearch

action

no

append

append

insert

规则是应附加在底部还是插入在顶部。如果规则已经存在,则不会修改链。

chain

no



链操作。此选项可以是用户定义链的名

称或任何内置链:'INPUT','FORWARD',

'OUTPUT','PREROUTING','POSTROUTING',

'SECMARK','CONNSECMARK。

comment

no



这指定将添加到规则的注释

ctstate

no



ctstate是conntrack模块中要匹配的连接状态的列表。

可能的状态是:'INVALID','NEW',

'ESTABLISHED','RELATED','UNTRACKED','SNAT','DNAT'

destination

no



目标规范。地址可以是网络名称,主机名,网络IP地址(带有/ mask)或纯IP地址。只有在将规则提交给内核之前,主机名才会被解析一次。请注意,指定要使用远程查询(如DNS)解析的任何名称是一个很糟糕的主意。掩码可以是网络掩码或纯数字,指定网络掩码左侧的1的数目。因此,24的掩码等于255.255.255.0。一个 ”!”地址指定之前的参数反转地址的感觉。

destination_port

no



目标端口或端口范围规范。这可以是服务名称或端口号。也可以使用格式first:last指定包含范围。如果省略第一个端口,则假设为“0”;如果省略最后一个,则假定为“65535”。如果第一个端口大于第二个端口,它们将被交换。

flush

no



刷新所有规则的指定表和链。如果未指定链,则清除整个表。忽略所有其他参数。

fragment

no



这意味着规则仅指分段分组的第二和另外的片段。由于没有办法告诉源或目的地端口这种分组(或ICMP类型),这样的分组将不匹配任何规定它们的规则。当。。。的时候 ”!”参数优先于fragment参数,则规则将仅匹配头碎片或未分段的数据包。

goto

no



这指定处理应在用户指定的链中继续。与跳转参数不同,返回将不会在这个链中继续处理,而是在通过跳转调用我们的链中

icmp_type

no



这允许指定ICMP类型,其可以是数字ICMP类型,类型/代码对,或命令“iptables -p icmp -h”所示的ICMP类型名称之一

in_interface

no



接收数据包的接口名称(仅适用于进入INPUT,FORWARD和PREROUTING链的数据包)。当。。。的时候 ”!”参数在接口名称之前使用,感觉被反转。如果接口名称以“+”结尾,则以此名称开头的任何接口将匹配。如果省略此选项,则任何接口名称将匹配。

ip_version

no

ipv4

ipv4

ipv6

该规则应适用于哪个版本的IP协议。

jump

no



这指定规则的目标;即如果分组匹配它要做什么。目标可以是用户定义的链(除了此规则所在的链之外),其中一个特殊内置目标立即决定数据包的命运或扩展(见下面的EXTENSIONS)。如果在规则中省略此选项(并且不使用goto参数),则匹配规则将对数据包的命运没有影响,但是规则上的计数器将增加。

limit

no



指定每秒允许的最大匹配平均数。该数字可以使用`/ second',`/ minute',`/ hour'或`/ day'或其中的一部分来显式地指定单位(因此`5 / second'与`5 / s'相同)。

limit_burst

no



指定在上述限制开始之前的最大突发数。

match

no



指定要使用的匹配,即测试特定属性的扩展模块。匹配集合构成调用目标的条件。如果指定为数组并且以短路方式工作,则匹配被首先评估为最后,即如果一个扩展产生假,则评估将停止。

out_interface

no



将要发送数据包的接口的名称(对于进入FORWARD,OUTPUT和POSTROUTING链的数据包)。当。。。的时候 ”!”参数在接口名称之前使用,感觉被反转。如果接口名称以“+”结尾,则以此名称开头的任何接口将匹配。如果省略此选项,则任何接口名称将匹配。

policy

no



将链的策略设置为给定目标。有效的目标是ACCEPT,DROP,QUEUE,RETURN。只有建立在链中可以有政策。此参数需要chain参数。忽略所有其他参数。

protocol

no



要检查的规则或数据包的协议。指定的协议可以是tcp,udp,udplite,icmp,esp,ah,sctp或特殊关键字“all”中的一个,或者它可以是表示这些协议之一或不同协议的数值。还允许来自/ etc / protocols的协议名称。一个 ”!”参数在协议反转测试之前。数字零等于所有。 “all”将与所有协议匹配,并在省略此选项时作为默认值。

reject_with

no



指定拒绝时返回的错误包类型。

set_counters




这使管理员能够初始化规则的数据包和字节计数器(在INSERT,APPEND,REPLACE操作期间)。

set_dscp_mark

no



这允许指定要添加到数据包的DSCP标记。它采用整数或十六进制值。相互排斥

set_dscp_mark_class

no



这允许指定将被转换为相应的DSCP标记的预定义DiffServ类。相互排斥

source

no



源规范。地址可以是网络名称,主机名,网络IP地址(带有/ mask)或纯IP地址。只有在将规则提交给内核之前,主机名才会被解析一次。请注意,指定要使用远程查询(如DNS)解析的任何名称是一个很糟糕的主意。掩码可以是网络掩码或纯数字,指定网络掩码左侧的1的数目。因此,24的掩码等于255.255.255.0。一个 ”!”地址指定之前的参数反转地址的感觉。

source_port

no



源端口或端口范围规范。这可以是服务名称或端口号。也可以使用格式first:last指定包含范围。如果省略第一个端口,则假设为“0”;如果省略最后一个,则假定为“65535”。如果第一个端口大于第二个端口,它们将被交换。

state

no

present

present

absent


规则是否缺失或存在。

table

no

filter

filter

nat

mangle

raw

security

此选项指定命令应操作的数据包匹配表。如果内核配置了自动模块加载,则将尝试加载该表的相应模块(如果尚未存在)。

to_destination

no



这指定了与DNAT一起使用的目标地址:没有这个,目标地址从不改变。

to_ports

no



这指定要使用的目标端口或端口范围:没有此,目标端口从不更改。仅当规则还指定以下协议之一时,此选项才有效:tcp,udp,dccp或sctp。

to_source

no



这指定了与SNAT一起使用的源地址:没有这个,源地址从不改变。

uid_owner

no



指定在所有者规则匹配时使用的UID或用户名。

如有出入,参考官网


20. blockinfine

- name: Insert into haproxy info /etc/haproxy/haproxy.cfg
  blockinfile:
    path: /etc/haproxy/haproxy.cfg
    marker: '####'
    insertafter: '####'
    state: present
    block: |
        listen cinder-api
          bind {{ vip }}:{{ cinder_port }}
          balance roundrobin
          option  tcpka
          option  httpchk
          option  httplog
          server node-1 {{ cinder_node_1 }}:{{ cinder_conf_port }} check inter 2000 rise 2 fall 5
          server node-2 {{ cinder_node_2 }}:{{ cinder_conf_port }} check inter 2000 rise 2 fall 5
          server node-3 {{ cinder_node_3 }}:{{ cinder_conf_port }} check inter 2000 rise 2 fall 5
          #cinder-api
        ####





这篇关于ansible常用模块-3的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程