ansible模块命令的执行

ansible执行的过程

ansible中inclede的用法 ansible become_method_群组

先看下配置文件

vim ansible.cfg
[defaults]
inventory = ./hosts
remote_user = devops

[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False

vim hosts
172.25.62.2
[db]
172.25.62.3

[webserver:children]
test
db

[webserver:vars]
http_port=80

** ansible默认变量的检索位置是
1 inventry文件 默认/etc/ansible/hosts
2 playbook 中vars定义的区域
3 roles中vars目录下的文件
4 roles 同级目录group_vars和hosts_vars目录下的文件
**

ansible中inclede的用法 ansible become_method_apache_02

**ansible正则

ansible “*” -m ping

对多个主机同时执行时,相互用冒号隔开

ansible “web1:web2” -m ping

****

常用模块:

1.copy模块:

ansible test -m copy -a “src=apache/index.html dest=/var/www/html/index.html” 将当前目录下的文件拷到目标主机指定的位置

2.file模块:

ansible test -m file -a "dest=/tmp/hosts mode=600 owner=root group=root"远程创建文件,修改文件和属性
 ansible test -m file -a “test=/tmp/dir stste=absent”

3.yum模块:

ansible test -m yum -a “name=hhtpd state=present” 安装软件
 ansible test -m yum -a “name=hhtpd state=absent” 卸载软件

4.service模块:

ansible test -m service -a “name=hhtpd state=start”
 ansible test -m service -a “name=hhtpd state=restart” 配置服务状态的模块
 ansible test -m service -a “name=hhtpd state=stopped”

5.user模块:

ansible test -m user -a “name=qs pqssword=密码”
 ansible test -m user -a “name=qs shell=/bin/bash groups=user,sheel append=yes state=present”

6.mysql_user模块;

ansible test -m mysql_user -a “name=qs password=密码 priv=.:celect host=’%’ stste=present”

远程主机需要安装MYSQL-python

**

ansible中inclede的用法 ansible become_method_apache_03

ansible命令安装httpd

ansible中inclede的用法 ansible become_method_配置文件_04

看看service模块说明
直接翻倒下面看例子

ansible中inclede的用法 ansible become_method_群组_05

ansible中inclede的用法 ansible become_method_配置文件_06

ansible中inclede的用法 ansible become_method_apache_07

这是用命令安装和启动httpd
比较麻烦

ansible中inclede的用法 ansible become_method_apache_08

可以看到已经启动

ansible中inclede的用法 ansible become_method_ansible中inclede的用法_09


利用copy模块将默认发布文件复制过去

ansible中inclede的用法 ansible become_method_群组_10

ansible中inclede的用法 ansible become_method_配置文件_11

ansible命令安装mariadb

用yum模块安装mariadb文件

ansible中inclede的用法 ansible become_method_配置文件_12

在server2上看看有没有装上包

ansible中inclede的用法 ansible become_method_ansible中inclede的用法_13


不知道用那个模块,哪个命令时,可以如图,找找帮助
开启mariadb

ansible中inclede的用法 ansible become_method_apache_14


**由于hosts文件内test群组只包含server2,

所以来server2上查看端口

**

ansible中inclede的用法 ansible become_method_apache_15

**

在server1上 推,给test群组,

由于安装mariadb还有依赖性,再装一个基于python环境的包

并且基于mysql_db 插入westos表**

ansible中inclede的用法 ansible become_method_配置文件_16

由于hosts文件内test群组只包含server2,server2登陆数据库查看

ansible中inclede的用法 ansible become_method_群组_17


命令创建用户,用的模块如图mysql_user 并授权westos下的所有东西都给qs用户

ansible中inclede的用法 ansible become_method_群组_18

ansible-playbook的使用

**
ansible-playbook适用于解决复杂环境的任务,相当于linux的shell
ansible的模块很多可以用ansible-doc来查看
ansible-doc -l #显示所有模块
ansible-doc yum ##显示yum模块的帮助
**

为了不混乱,我们在devops的家目录下的ansible目录再新建一个apache目录,专门放http的文件

ansible中inclede的用法 ansible become_method_apache_19

先设置一个.vimrc的文件 里面设置当文件结尾时是yml结尾时,tab键是两个空格

ansible中inclede的用法 ansible become_method_配置文件_20


进入apache专属文件夹,开始写yml文件

ansible中inclede的用法 ansible become_method_apache_21

**yml格式有明确要求,空格不能多,不能少,
第一行以—开始,表明YMAL文件开始
#表示注释
列表元素以-开头后接一个空格,同一列表元素缩进相同
eg:
---- hosts: test #选择你要推送的群组
tasks: #步骤
- name: install apache #起个这个步骤的名字
yum: #调用yum模块
name: httpd #yum要安装的软件名
state: present #状态是安装
**

缩进一定要正确

---- hosts: test
  tasks:
    - name: install apache
      yum:
        name: httpd
        state: present

ansible中inclede的用法 ansible become_method_群组_22


调用的时候要用ansible-playbook yml文件地址来调用
注意:
此时我在apache目录下
playbook执行时会默认去家目录下的ansible读东西
所以你推的时候得指明你的yml文件在apache下的install.yml

ansible中inclede的用法 ansible become_method_apache_23


server2看看效果

ansible中inclede的用法 ansible become_method_配置文件_24


删掉之前做实验的文件

ansible中inclede的用法 ansible become_method_群组_25


查看火墙状态

ansible中inclede的用法 ansible become_method_apache_26


再次完善推的文件,加上配置火墙允许httpd

ansible中inclede的用法 ansible become_method_配置文件_27

ansible中inclede的用法 ansible become_method_apache_28

ansible中inclede的用法 ansible become_method_群组_29

在后面添加测试httpd的代码,访问172.25.62.2并返回参数

ansible中inclede的用法 ansible become_method_ansible中inclede的用法_30

ansible中inclede的用法 ansible become_method_群组_31


那麼如何配置http呢
现在配置主机上装一个apache,目的是获取httpd的配置文件,将配置文件复制到ansible当前目录下,修改你想修改的内容,运用copy模块,推给相应主机就可以了。

ansible中inclede的用法 ansible become_method_ansible中inclede的用法_32


ansible中inclede的用法 ansible become_method_ansible中inclede的用法_33


将端口修改为8080

ansible中inclede的用法 ansible become_method_配置文件_34

添加触发器是以为修改给了配置文件要使之生效,

ansible中inclede的用法 ansible become_method_ansible中inclede的用法_35

此时要看看ansible目录下有啥,apache目录下有啥

ansible中inclede的用法 ansible become_method_apache_36

ansible中inclede的用法 ansible become_method_apache_37

端口改为8080

ansible中inclede的用法 ansible become_method_apache_38


改个变量试试

ansible中inclede的用法 ansible become_method_apache_39

也可以用template模块,和copy模块差不多,注意使用触发器时前面要写notify(触发器名称) 后面handlers的名字要和notify后面的触发器名称对应

ansible中inclede的用法 ansible become_method_ansible中inclede的用法_40


**想看看那个文件优先级高在hosts设置变量对应的值为80 **

ansible中inclede的用法 ansible become_method_配置文件_41


报错原因是没有在apache下找到模板文件

ansible中inclede的用法 ansible become_method_群组_42


访问,这次用的是db群组

ansible中inclede的用法 ansible become_method_apache_43

ansible中inclede的用法 ansible become_method_ansible中inclede的用法_44

ansible中inclede的用法 ansible become_method_ansible中inclede的用法_45

ansible中inclede的用法 ansible become_method_ansible中inclede的用法_46

看看谁的优先级高
hosts设置为8080
yml开头定义变量为80

ansible中inclede的用法 ansible become_method_群组_47

ansible中inclede的用法 ansible become_method_群组_48

ansible中inclede的用法 ansible become_method_群组_49

还是文件开头管用 嘿嘿

ansible中inclede的用法 ansible become_method_群组_50