Ansible(ad-hoc) day-01

1.ansible基本概述
2.ansible的实现
3.ansible ad-hoc 单模块的操作


一、Ansible基础概述

1.什么是Ansible
Ansible是一个自动化的配置管理工具,通过一个命令完成一系列的操作,进而减少重复行的工作,提高工作的效率

2.功能
①批量执行远程命令
②批量配置软件服务
③实现软件开发功能
④编程高级的IT任务,playbook用来描绘一套IT架构(剧本)

3.特点
易学、操作灵活、简单应用、安全可靠、移植性高

4.架构
控制端、被控端、ssh、inventory、ad-hoc、playbook

二、ansible的实现

1.安装配置环境

1.安装
[root@manager ~]# yum install ansible -y

2.配置ansible.cfg,指定,主机清单的目录
[root@manager ansible_adhoc]# cat ansible.cfg 
[defaults]
inventory = ./hosts

3.定义主机清单
[root@manager ~]# cat /etc/ansible/hosts 
[webservers]
172.16.1.7
172.16.1.8

4.推送公钥给各个节点

5.执行ansible ad-hoc 测试是否能与该清单节点通讯
[root@manager ~]# ansible webservers -m ping

2.配置文件查找顺序

1.$ANSIBLE_CONFIG
2.当前目录下的ansible.cfg
3.当前用户家目录下的ansible.cfg
4.查找/etc/ansible/ansible.cfg

总结:一般我们会创建一个目录,然后切换到该目录下,创建ansible.cfg和hosts文件,然后进行ansible ad-hoc操作

3..主机清单的写法

1.基于密码的方式
[webservers]
172.16.1.31 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='密码'

2.基于秘钥的方式
[webservers]
172.16.1.31
#172.16.1.31 hostname=nfs      
#nfs ansible_ssh_host=172.16.1.31      #显示主机名

三、ansible ad-hoc单个模块的操作

临时命令,执行完即结束,不会保存

语法:
ansible [主机或主机组名] -m [模块] -a ['动作']

提示:
绿色(未更改)
黄色(发生了更改)
红色(报错)

主要模块

模块名称 具体
命令 command、shell
安装 yum、yum_repository
配置 copy、file
启动 systemd、service
挂载 mount
定时 cron
用户 user、group
防火墙 selinux、firewalld

1.command 和 shell 模块
区别:shell支持通道,而command不支持

[root@manager ansible_adhoc]# ansible webserver -m command -a 'df -h'
[root@manager ansible_adhoc]# ansible webservers -m shell -a 'ps -ef |grep nginx'

2.yum 模块

[root@manager ansible_adhoc]# ansible webserver -m yum -a 'name=nginx state=present'
name  软件包名称,或下载地址
state:
      present    安装(默认)
      absent     卸载
      latest     更新
enablerepo  指定哪个仓库下载
disablerepo  禁止哪个仓库下载

3.copy 模块

[root@manager ansible_adhoc]# ansible webservers -m copy -a 'src=./exports.j2 dest=/etc/exports owner=root group=root mode=644'
src  源文件
dest  目标位置
owner 设定文件属主
group  设定文件属组
mode  设定文件权限
backup  备份(只在文件有变化时执行)
content  往目标主机文件中增加内容(覆盖重定向)

4.group 和 user 模块

[root@manager ansible_adhoc]# ansible webservers -m group -a 'name=www gid=666'
[root@manager ansible_adhoc]# ansible webservers -m user -a 'name=www uid=666 group=www create_home=no shell=/sbin/nologin'
groups       指定附加组
create_home  创不创建家目录
shell        指定登录shell
state:
      present    创建(默认)
      absent     删除
remove=yes    移除用户相关的文件(例如家目录)

#创建jsm用户,为其添加123作为登录密码,并且创建家目录
[root@manager ansible_adhoc]# ansible localhost -m debug -a "msg={{ '123' | password_hash('sha512', 'salt') }}"
[root@manager ansible_adhoc]# ansible webservers -m user -a 'name=jsm password="$6$salt$jkHSO0tOjmLW0S1NFlw5veSIDRAVsiQQMTrkOKy4xdCCLPNIsHhZkIRlzfzIvKyXeGdOfCBoW1wJZPLyQ9Qx/1" create_home=yes'

5file 模块

[root@manager ansible_adhoc]# ansible webservers -m file -a 'path=/data state=directory owner=www group=www mode=755 recurse=yes'
path  指定被控端的路径
state:
      directory    创建目录
      touch        创建文件
recurse  递归授权

6.systemd 和 service 模块(一模一样)

[root@manager ansible_adhoc]# ansible webservers -m systemd -a 'name=nginx state=started enabled=yes'
state:
      started    启动
      restarted    重启
      reloaded    重载
      stopped    停止
enabled=yes    开机自启

7.mount 模块

[root@manager ansible_adhoc]# ansible client -m mount -a 'src=172.16.1.7:/data path=/opt fstype=nfs opts=defaults state=mounted'
src  设备、nfs、磁盘、光盘等
path  被控端要挂载的目录
fstype:文件系统类型
      iso9660   光盘
      nfs
      xfs
opts  挂载参数
state:
      mounted    挂载设备,并加入开机自启
      present    写入fstab,不挂载
      absent    取消挂载,并清除fstab中记录
      unmounted    取消挂载,不清楚fstab记录
      remounted    重新挂载

8.get_url 模块

[root@manager ansible_adhoc]# ansible webservers -m get_url -a 'url=https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.0-1.el7.x86_64.rpm dest=/tmp'
url  指定下载地址
dest  指定下载目录

9.cron 模块

[root@manager ansible_adhoc]# ansible webservers -m cron -a 'name=backup minute=0 hour=5 job=/server/script/client_data_server.sh &>/dev/null'
name  定时任务描述
job  具体的任务
minute  分
hour    时
day     日
month   月
weekday 周

disabled=no  关闭定时任务
disabled=yes  重新启动定时任务

10.selinux 和 firewalld 模块

[root@manager ansible_adhoc]# ansible webservers -m selinux -a 'state=disabled'
state=disabled  关闭防火墙 

你可能感兴趣的:(Ansible(ad-hoc) day-01)