美文网首页
安装,常用命令,mode

安装,常用命令,mode

作者: 快去学习不然怎么去看aimer | 来源:发表于2019-10-11 21:12 被阅读0次
mode :ping,command,shell,copy,file

ansible是自动化运维工具,基于Python开发。

ansible常用模式

1.ad-hoc模式(点对点模式) 使用单个模块,就相当于bash中的一句话shell
2.playbook模式(剧本模式),相当于脚本

ansible 命令执行过程

  1. 加载自己的配置文件,默认 /etc/ansible/ansible.cfg ;
  2. 查找对应的主机配置文件,找到要执行的主机或者组;
  3. 加载自己对应的模块文件,如 command;
  4. 通过ansible将模块或命令生成对应的临时py文件(python脚本), 并将该文件传输至远程服务器;5. 对应执行用户的家目录的.ansible/tmp/XXX/XXX.PY 文件;
  5. 给文件 +x 执行权限;
  6. 执行并返回结果;
  7. 删除临时py文件, sleep 0 退出;

安装

yum install epel-release -y
yum install ansible –y

管理节点 被管理节点
ssh ssh
python python
ansible

ansible 程序结构如下(yum安装):
配置文件目录:/etc/ansible/
执行文件目录:/usr/bin/
Lib库依赖目录:/usr/lib/pythonX.X/site-packages/ansible/X.X.X/
Help文档目录:/usr/share/doc/ansible-
Man文档目录:/usr/share/man/man1/

配置文件查找顺序

  1. 检查环境变量 ANSIBLE_CONFIG 指向的路径文件(export ANSIBLE_CONFIG=/etc/ansible.cfg);
  2. ~/.ansible.cfg ,检查当前目录下的ansible.cfg配置文件;
  3. /etc/ansible.cfg 检查etc目录的配置文件。

管理节点的主机列表清单四种格式:(vim /etc/ansible/hosts)

1、 直接指明主机地址或主机名:
  green.example.com
  blue.example.com
  192.168.100.1
  192.168.100.10
2、 定义一个主机组[组名]把地址或主机名加进去
  [mysql_test]
  192.168.253.159
  192.168.253.160
  192.168.253.153
3、定义组内包含组
[web]
192.168.11.128
192.168.11.129
[db]
192.168.11.130
192.168.11.131
[webs:children]
web
db
4、定义主机组的变量
[web:vars]
ansible_ssh_user=root

doc命令

ansible-doc -l            #获取全部模块的信息
ansible-doc -s MOD_NAME     #获取指定模块的使用帮助

命令格式

ansible <host-pattern> [-f forks] [-m module_name] [-a args]

-a MODULE_ARGS #模块的参数,如果执行默认COMMAND的模块,即是命令参数,如:
“date”,“pwd”等等
-k , --ask-pass ask for SSH password。登录密码,提示输入SSH密码而不是假设基于密钥的验证 --ask-su-pass ask for su password。su切换密码
-K , --ask-sudo-pass ask for sudo password。提示密码使用sudo,sudo表示提权操作 --ask-vault-pass
ask for vault password。假设我们设定了加密的密码,则用该选项进行访问
-B SECONDS 后台运行超时时间 -C #模拟运行环境并进行预运行,可以进行查错测试 -c CONNECTION #连接类型使用
-f FORKS #并行任务数,默认为5
-i INVENTORY #指定主机清单的路径,默认为 /etc/ansible/hosts --list-hosts 查看有哪些主机组
-m MODULE_NAME #执行模块的名字,默认使用 command 模块,所以如果是只执行单一命令可
以不用 -m参数
-o 压缩输出,尝试将所有结果在一行输出,一般针对收集工具使用
-S 用 su 命令 -R SU_USER 指定 su 的用户,默认为 root 用户 -s #用 sudo 命令
-U SUDO_USER 指定 sudo 到哪个用户,默认为 root用户
-T TIMEOUT 指定 ssh 默认超时时间,默认为10s,也可在配置文件中修改
-u REMOTE_USER 远程用户,默认为 root 用户
-v 查看详细信息,同时支持 -vvv , -vvvv 可查看更详细信息

ansible的使用首先是ssh的免密登陆
yum -y install openssh*

常用模块

ping

-bash-4.2# ansible web -m ping
172.17.0.3 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
172.17.0.4 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
172.17.0.5 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
web在/etc/ansible/hosts中注册

command(这个模块可以直接在远程主机上执行命令,并将结果返回本主机)

不支持管道符

-bash-4.2# ansible web -m command -a 'ss -natl'
172.17.0.4 | SUCCESS | rc=0 >>
State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port 
LISTEN     0      128                       *:22                       *:*     
LISTEN     0      128                      :::22                      :::*     

172.17.0.3 | SUCCESS | rc=0 >>
State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port 
LISTEN     0      128                       *:22                       *:*     
LISTEN     0      128                      :::22                      :::*     

172.17.0.5 | SUCCESS | rc=0 >>
State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port 
LISTEN     0      128                       *:22                       *:*     
LISTEN     0      128                      :::22                      :::*     

-bash-4.2# ansible web -m command -a 'chdir=/  ls'   chdir相当于cd

-bash-4.2# ansible web -m command -a 'creates=/root/aa.txt   ls' 
一个文件名,当这个文件存在,则该命令不执行,可以用来做判断,存在aa.txt因此不会执行ls

-bash-4.2# ansible web -m command -a 'removes=/root/aa.txt   ls' 
一个文件名,这个文件不存在,则该命令不执行,同理

shell

-bash-4.2# ansible web -m shell -a 'ss -natl | grep 22'
172.17.0.3 | SUCCESS | rc=0 >>
LISTEN     0      128                       *:22                       *:*     
LISTEN     0      128                      :::22                      :::*     

172.17.0.5 | SUCCESS | rc=0 >>
LISTEN     0      128                       *:22                       *:*     
LISTEN     0      128                      :::22                      :::*     

172.17.0.4 | SUCCESS | rc=0 >>
LISTEN     0      128                       *:22                       *:*     
LISTEN     0      128                      :::22                      :::*     

在被管理机上执行shell命令

copy

src:被复制到远程主机的本地文件。可以是绝对路径,也可以是相对路径。如果路径是一个目录,则会递归复制
content:用于替换"src",可以直接指定文件的值
dest:必选项,将源文件复制到的远程主机的绝对路径
backup:当文件内容发生改变后,在覆盖之前把源文件备份,备份文件包含时间信息
directory_mode:递归设定目录的权限,默认为系统默认权限
force:当目标主机包含该文件,但内容不同时,设为"yes",表示强制覆盖;设为"no",表示目标主机的目标位置不存在该文件才复制。默认为"yes"
others:所有的 file 模块中的选项可以在这里使用

cp  a.txt  /root/
-bash-4.2# ansible web -m copy -a 'src=a.txt dest=/root/'

-bash-4.2# ansible web -m shell -a 'ls /root'            
172.17.0.4 | SUCCESS | rc=0 >>
a.txt
anaconda-ks.cfg

172.17.0.3 | SUCCESS | rc=0 >>
a.txt
anaconda-ks.cfg

172.17.0.5 | SUCCESS | rc=0 >>
a.txt
anaconda-ks.cfg
给定内容生成文件,并制定权限

ansible web -m copy -a 'content="I am rou" dest=/data/name
mode=666'

ansible web -m shell -a 'cat /root/b.txt'
172.17.0.4 | SUCCESS | rc=0 >>
I am rou

修改内容,同名文件备份(按时间)
ansible web -m copy -a 'content="I am rourou"  backup=yes dest=/root/b.txt  mode=666'

172.17.0.4 | SUCCESS | rc=0 >>
total 16
-rw-r--r-- 1 root root    2 Oct 11 12:45 a.txt
-rw-r--r-- 1 root root 3862 Jul  8  2014 anaconda-ks.cfg
-rw-rw-rw- 1 root root   11 Oct 11 12:59 b.txt
-rw-rw-rw- 1 root root    8 Oct 11 12:54 b.txt.658.2019-10-11@12:59:47~

file

force:需要在两种情况下强制创建软链接,一种是源文件不存在,但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no
group:定义文件/目录的属组。后面可以加上mode:定义文件/目录的权限
owner:定义文件/目录的属主。后面必须跟上path:定义文件/目录的路径
recurse:递归设置文件的属性,只对目录有效,后面跟上
src: 被链接的源文件路径,只应用于state=link的情况
dest:被链接到的路径,只应用于state=link的情况
state:状态,有以下选项:
directory:如果目录不存在,就创建目录
link:创建软链接
hard:创建硬链接
touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间
absent:删除目录、文件或者取消链接文件

mkdir app 
ansible web -m file -a 'path=/data/app state=directory'

-bash-4.2# ansible web -m shell -a 'ls -l /root'
172.17.0.5 | SUCCESS | rc=0 >>
total 16
-rw-r--r-- 1 root root    2 Oct 11 12:45 a.txt
-rw-r--r-- 1 root root 3862 Jul  8  2014 anaconda-ks.cfg
drwxr-xr-x 2 root root    6 Oct 11 13:08 app
-rw-rw-rw- 1 root root   11 Oct 11 12:59 b.txt
-rw-rw-rw- 1 root root    8 Oct 11 12:54 b.txt.637.2019-10-11@12:59:47~

touch app1
ansible web -m file -a 'path=/root/app1 state=file
ln -s  aaa.jpg /root/bbb.jpg
ansible web -m file -a 'path=/root/bbb.jpg src=aaa.jpg state=link'

ln  /root/aaa.txt  /root/bbb.txt
ansible web -m file -a 'path=/root/bbb.jpg src=/root/aaa.jpg state=hard'
rm -rf a
ansible web -m file -a 'path=/root/a state=absent'

相关文章

网友评论

      本文标题:安装,常用命令,mode

      本文链接:https://www.haomeiwen.com/subject/pwftmctx.html