ad-hoc各模块的使用(2)


+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
张贺,多年互联网行业工作经验,担任过网络工程师、系统集成工程师、LINUX系统运维工程师
个人网站:www.zhanghehe.cn
笔者微信:zhanghe15069028807,现居济南历下区
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-


下面的内容是通过ad-hoc的方式部署nfs和httpd服务,主要的目的是通过这两个服务来练习ansible各种模块的使用,要求我们能熟练的手动部署httpd和nfs服务,然后才能掌握通过ansible的方式部署。

NFS

第一步:定义主机清单,确认各个主机的角色

[root@ansible ~]# vim /etc/ansible/hosts
[web]
192.168.80.62
[nfs]
192.168.80.63
[backup]
192.168.80.64

第二步:安装和配置NFS服务

//安装
[root@ansible ~]# ansible nfs -m yum -a "name=nfs-utils state=present"

//在ansible上写好配置文件,通过copy模块推送到nfs端
[root@ansible ~]# cat exports.template
/data 192.168.80.0/24(rw,all_squash,anonuid=666,anongid=666)

//查询copy模块的使用
[root@ansible ~]# ansible-doc copy
copy:
    src: /srv/myfiles/foo.conf   
    dest: /etc/foo.conf
    owner: foo
    group: foo
    mode: u+rw,g-wx,o-rwx

//src和dest都非常好理解,backup的意思是覆盖之前做一个备份
[root@ansible ~]# ansible nfs -m copy -a "src=./exports.template dest=/etc/exports owern=root group=root mode=644 backup=yes"

copy模块还有一个content参数,通过这个参数可以在目标主机的某个文件当中追加内容,例如:

ansible nfs -m copy -a "content='123' dest=/tmp/1.txt"

第三步:准备运行nfs的用户www

在这里要用到user模块和group模块。

gruop 所属组

groups 附加组,携带apped=yes

sdate状态:

​ absent 移除远程主机的组

​ present 创建远端主机的组,默认

[root@ansible ~]# ansible nfs -m group -a "name=www gid=666 state=present"
[root@ansible ~]# ansible nfs -m user -a "name=www uid=666 group=666 append=yes create_home=no shell=/sbin/nologin/"

第四步:创建/data目录,并指定权限

//如果是创建文件的话,就把state改成touch即可。
[root@ansible ~]# ansible nfs -m file -a "path=/data state=directory owner=www group=www mode=755"   

第五步:启动服务并开机启动

启动服务要用到server模块,模块的状态有:stopped、started、restarted、reloaded、enabled(开机启动)

[root@ansible ~]# ansible nfs -m service -a "name=nfs-server state=started enabled=yes"

WEB

第一步:安装httpd服务

[root@ansible ~]# ansible web -m yum -a "name=httpd state=present"

第二步:开机启动httpd

[root@ansible ~]# ansible web -m service -a "name=httpd state=started enabled=yes"

第三步:通过mount模块挂载nfs共享文件夹

mount模块state用法:

  • present 将配置写入到配置文件,不读入到内存
  • mounted 读入内存并写入到/etc/fstab
  • unmounted 仅卸载内存,不清理配置文件
  • absent 即卸载内存,也清理配置文件/etc/fstab
[root@ansible ~]# ansible web -m mount -a "path=/var/www/html src=192.168.80.188:/data fstype=nfs opts=defaults state=mounted"

其它

定时任务模块

cron模块的用法:

name 添加定义任务的注释

user 指定定时任务写入到哪个用户下,默认root

minute 分

hour 时

day 日

month 月

weekday 周

job 任务

state 状态

​ present 创建定时任务,默认

[root@ansible ~]# ansible web -m cron -a "name='rsync scripts' minute=00 hour=01 day=* month=* weekday=* job='/bin/bash /server/scripts/rsync.sh&>/dev/null'"

解压模块

copy:默认为yes,当copy=yes,那么拷贝的文件是从ansible主机复制到远程主机上的,如果设置为copy=no,那么会在远程主机上寻找src源文件

src:源路径,可以是ansible主机上的路径,也可以是远程主机上的路径,如果是远程主机上的路径,则需要设置copy=no

dest:远程主机上的目标路径

mode:设置解压缩后的文件权限

ansible web -m unarchive -a 'src=/srv/tomcat8/apache-tomcat-8.0.29.tar.gz dest=/usr/local copy=no mode=0755'

get_url模块

//将http://nginx.org/download/nginx-1.6.3.tar.gz文件下载到指定节点的/tmp 目录下
ansible web -m get_url -a 'url=http://nginx.org/download/nginx-1.6.3.tar.gz dest=/tmp'

创建可以登录的用户

这是user模块的补充,上面我们创建的是不能登录的用户,这里面我们要创建能登录的用户。

//首先生成加密后的密码,把cba-123加密
[root@ansible ~]# ansible all -i localhost, -m debug -a "msg={{'cba-123' | password_hash('sha512','mysecretsalt')}}"
localhost | SUCCESS => {
    "msg": "$6$mysecretsalt$ik7T7vJzLOT58Wvsg/ee9PUEBiylK60YrCBrS260YwXyav2WV6sIs3TmSiSwWLXkHK4YeVSw8kYgApt/ArTOt0"
}

[root@ansible ~]# ansible nfs -m user -a 'name=zhanghe password=$6$mysecretsalt$ik7T7vJzLOT58Wvsg/ee9PUEBiylK60YrCBrS260YwXyav2WV6sIs3TmSiSwWLXkHK4YeVSw8kYgApt/ArTOt0 create_home=yes shell=/bin/bash'

//把公钥一块创建出来
[root@ansible ~]# ansible nfs -m user -a "user=zhanghe generate_ssh_key=yes ssh_key_bits=2048 ssh_key_file=.ssh/id_rsa"
posted @ 2019-12-28 16:43  张贺贺呀  阅读(247)  评论(0编辑  收藏  举报