ansible模块命令的执行
ansible执行的过程
先看下配置文件
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正则
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命令安装httpd
看看service模块说明
直接翻倒下面看例子
这是用命令安装和启动httpd
比较麻烦
可以看到已经启动
利用copy模块将默认发布文件复制过去
ansible命令安装mariadb
用yum模块安装mariadb文件
在server2上看看有没有装上包
不知道用那个模块,哪个命令时,可以如图,找找帮助
开启mariadb
**由于hosts文件内test群组只包含server2,
所以来server2上查看端口
**
**
在server1上 推,给test群组,
由于安装mariadb还有依赖性,再装一个基于python环境的包
并且基于mysql_db 插入westos表**
由于hosts文件内test群组只包含server2,server2登陆数据库查看
命令创建用户,用的模块如图mysql_user 并授权westos下的所有东西都给qs用户
ansible-playbook的使用
**
ansible-playbook适用于解决复杂环境的任务,相当于linux的shell
ansible的模块很多可以用ansible-doc来查看
ansible-doc -l #显示所有模块
ansible-doc yum ##显示yum模块的帮助
**
为了不混乱,我们在devops的家目录下的ansible目录再新建一个apache目录,专门放http的文件
先设置一个.vimrc的文件 里面设置当文件结尾时是yml结尾时,tab键是两个空格
进入apache专属文件夹,开始写yml文件
**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-playbook yml文件地址来调用
注意:
此时我在apache目录下
playbook执行时会默认去家目录下的ansible读东西
所以你推的时候得指明你的yml文件在apache下的install.yml
server2看看效果
删掉之前做实验的文件
查看火墙状态
再次完善推的文件,加上配置火墙允许httpd
在后面添加测试httpd的代码,访问172.25.62.2并返回参数
推
那麼如何配置http呢
现在配置主机上装一个apache,目的是获取httpd的配置文件,将配置文件复制到ansible当前目录下,修改你想修改的内容,运用copy模块,推给相应主机就可以了。
将端口修改为8080
添加触发器是以为修改给了配置文件要使之生效,
此时要看看ansible目录下有啥,apache目录下有啥
端口改为8080
改个变量试试
也可以用template模块,和copy模块差不多,注意使用触发器时前面要写notify(触发器名称) 后面handlers的名字要和notify后面的触发器名称对应
**想看看那个文件优先级高在hosts设置变量对应的值为80 **
报错原因是没有在apache下找到模板文件
访问,这次用的是db群组
看看谁的优先级高
hosts设置为8080
yml开头定义变量为80
推
还是文件开头管用 嘿嘿