ansible代码发布系统的配置入门

ansible属于第三方库,可以通过配置阿里云的镜像实现快速下载安装,它在阿里云的epel模型仓库下

在配置阿里源时,为确保正常安装,一定要清空缓存 :sudo yum clean all

再执行生成元缓存:sudo yum makecache .

元仓库缓存生成后,就可以安装ansible了:sudo yum install ansible

***********************************************************************

通常情况下,登录客户端会采用ssh秘钥登录的方式,不建议直接使用密码

可以通过代码自动生成ssh秘钥:ssh-keygen

本质上就是:A作为主机,将自己生成的ssh秘钥(公钥)发送给希望被控制,实现登陆的子机

ssh-copy-id 192.168.1.23(此处是子机ip)

ansible中的命令格式:  ansible <host-pattern> [options]

----------------------------------------------------------------------------

-a        #模块的参数

-C          #检查

-f         #用于处理高并发

--list hosts    #列出主机列表

-m        #模块名称

--syntax-check  #语法检查

------------------------------------------------------------------------------

查看ansible生成的文件:rpm --ql ansible

关于ansible的主机配置信息目录:/etc/ansible/hosts    可以用vi 或者vim编辑器查看:vim /etc/ansible/hosts

用ansible中的ping去测试机器是否在线:ansible 192.168.1.23 -m ping

查看是否存在用户 :
tail -l /etc/passwd
tail -l /etc/shadow
id kevin
给用户设置密码:
echo ‘123456’| passwd --stdin kevin
批量创建密码:
ansible web(web是当前机器所在组) -m shell -a 'echo "123456"| passwd --stdin kevin '
执行远程文件方式:
ansible 192.169.1.122 -m shell -a 'bash a.sh'
ansible 192.169.1.122 -m shell -a '/root/a.sh' (但文件必须具有可执行权限)
ansible 192.169.1.122 -m shell -a '/root/a.py' 可用于执行远端的Python脚本

ansible web -m script -a '/root/m.sh' 执行本地的文件 管控机上的文件
ansible web -m script -a 'removes=/root/m.sh /root/m.sh' 判断被控机上是否存在该文件,存在就移除,不存在则不执行
ansible web -m script -a 'creates=/root/m.sh /root/m.sh' 判断被控机上是否已存在该文件,不存在则创建,存在则不处理

-----------------------------------------------------------------------------------

copy模块

backup 备份
dest 目的地址
group 文件的属组
mode 文件的权限 r 4 w 2 x 1
owner 文件的属主
src 源文件
checksum 通过md5码判断文件是否需要复制
ansible db -m copy -a 'src=/root/m.sh dest=/tmp/a.sh' 复制本地文件到远程主机
ansible db -m copy -a 'src=/root/m.sh dest=/tmp/a.sh mode=755' 拷贝文件到远程主机并指定文件的权限
ansible web -m copy -a 'src=/root/m.sh dest=/tmp/a.sh mode=755 owner=kevin' 远程推送文件 指定文件权限 并修改属主
ansible web -m copy -a 'src=/etc/init.d dest=/tmp/ mode=755 owner=kevin' 复制本地目录到远程主机
ansible web -m copy -a 'src=/etc/init.d/ dest=/tmp/ mode=755 owner=kevin' 复制本地目录中的文件到远程主机
ansible web -m copy -a 'content='我的一次生最美好的场景,就是遇见你 dest=/tmp/a.txt'' 将文本内容注入远程主机文件中

---------------------------------------------------------------------------------------

file模块:
inode 硬盘的地址
id 获取的是内存的地址
ln -s a.py b.py 创建文件a.py的软链接
ln a.py c.py 创建a.py的硬链接
当源文件发生变化时,软链接和硬链接都会发生变化
ansible db -m file -a 'path=/hello state=directory' 在远程机器上创建文件夹
ansible db -m file -a 'path=/root/a.txt state=touch' 在远程机器上创建文件
ansible db -m file -a 'path=/tmp/f src=/etc/fstab state=link' 创建软链接 path是目标地址 src是源地址
ansible db -m file -a 'path=/tmp/f state=absent ' 删除文件或者文件夹

----------------------------------------------------------------------------------

fetch模块
ansible web -m fetch -a 'src=/var/log/cron dest=/tmp' src是源地址 dest 是目标地址下载被控节点中的文件
每台机器会创建一个文件夹,目录结构不会改变

***********************************************************************

查看yum的安装包组:yum group list

安装yum包组 :yum groupinstall

disablerepo  :禁用repo源

enablerepo :启用repo源

name 包名

state install 安装状态

remove (absent)卸载

ansible web -m yum -a 'name=wget '          安装wget

ansible web -m yum -a 'name=wget state=absent'     卸载wget

 ------------------------------------------------------------------------------------------------

pip install 安装包

pip freeze >a.txt   将Python的环境打包到a.txt文件中汇总  就有了环境名称和版本号

pip install -r a.txt  安装文件中的包

pip list  查看所有的已安装成功的包

ansible web  -m yum -a 'name=nginx'  安装指定的环境

---------------------------------------------------------------------------------------

service模块:

ps -ef |grep nginx   查看进程信息

ss -tnlp  查看端口信息

systemctl start nginx  centOS7启动nginx的命令

service nginx start     centOS6启动nginx的命令

systemctl enabled nginx centOS7  开机自启动nginx

chkconfig nginx on   centOS6开机自启动nginx

ansible web -m service -a 'name=nginx state=started'    启动nginx

ansible web -m service -a 'name=nginx state=stopped'            关闭nginx

-------------------------------------------------------------------------------------------

cron计划任务模块:

*  *  *  *  *  job  (分时日月周 任务)

crontab -e  编辑计划任务

crontab -l  查看计划任务

crontab -r  删除计划任务

minute 分钟

hour 小时

day 天

month 月

weekday  周

name  任务名

disabled 禁用  

ansible db -m cron -a 'minute=24 job="touch /tmp/a.txt" name=touchfile'  创建一个计划任务

ansible db -m cron -a 'name=touchfile state=absent'     删除一个计划任务

ansible db -m cron -a 'minute=24 job="touch/tmp/a.txt" name=touchfile disabled=yes'  禁用计划任务 

----------------------------------------------------------------------------------------

用户相关:

管理员 root   0

普通用户

  系统用户 不能登录 占用端口1-999 (centos7)   1-499(centos6)

  登录用户 可以登录 占用端口1000-65535     500-65535

-d 指定用户家目录

-g 指定用户组

-G 指定用户的附加组

-s 指定登录后的shell

-r 创建一个系统组

useradd -r kevin 创建一个系统用户 倒序从999开始

useradd -s /sbin/nologin kevin   创建普通用户从1000开始

useradd -d /opy/kevin kevin    创建用户时指定用户的家目录

useradd -u 3000 lisa   创建用户 并指定其ID

userdel kevin    删除用户  但其家目录会保留

userdel -r kevin   删除用户 节目录也删除

groupadd Kevin  创建用户组

groupdel Kevin  删除用户组

-------------------------------------------------------------------------------------

user模块:

group 

groups 附加组

home 家目录

name  用户名

password 密码

remove 

shell 用户登录后使用的shell

system 创建一个系统用户

uid 用来指定用户的ID

state 状态

ansible db -m user -a 'name=lisa uid=4000 home=/opt/lisa groups=root shell=/sbin/nologin'

#创建一个用户,指定用户的名字Lisa 端口号4000 家目录 附加组 shell操作为不可登录用户

ansible db -m user -a 'name=lisa state=absent'  删除指定用户,但会保留家目录

ansible db -m user -a 'name=lisa state=absent remove=yes'  删除指定用户 并移除家目录

---------------------------------------------------------------------------------

group模块:

gid 组的id

name 组的名字

system 系统组

state 状态

ansible db -m group -a 'name=lisa system=yes'  创建系统组

ansible db -m group -a 'name=lisa state=absent'   删除系统组

原文地址:https://www.cnblogs.com/wen-kang/p/10903005.html