Move afsmon to mirror-update.opendev.org
This migrates the afsmon script from puppet deploying on mirror-update.openstack.org to ansible deploying on mirror-update.opendev.org. There is nothing particularly special and this just a straight install with some minor dependencies. Since we have log publishing running on the opendev.org server, we publish the update logs alongside the others. Change-Id: Ifa3b4d59f8d0fc23a4492e50348bab30766d5779
This commit is contained in:
parent
7b7c36711c
commit
97c4735129
@ -458,47 +458,12 @@ class openstack_project::mirror_update (
|
||||
}
|
||||
|
||||
# AFS Monitoring
|
||||
file { '/etc/afsmon.cfg':
|
||||
ensure => present,
|
||||
content => template('openstack_project/mirror-update/afsmon.cfg.erb'),
|
||||
replace => true,
|
||||
}
|
||||
|
||||
vcsrepo { '/opt/afsmon':
|
||||
ensure => latest,
|
||||
provider => git,
|
||||
revision => 'master',
|
||||
source => 'https://opendev.org/opendev/afsmon',
|
||||
}
|
||||
|
||||
python::virtualenv { '/usr/afsmon-env':
|
||||
ensure => present,
|
||||
owner => 'root',
|
||||
group => 'root',
|
||||
timeout => 0,
|
||||
# puppet-python 1.9.4 wants to guess we want "virtualenv-3", which
|
||||
# we don't. Fixed in later versions.
|
||||
virtualenv => 'virtualenv',
|
||||
version => 3,
|
||||
}
|
||||
|
||||
exec { 'install_afsmon' :
|
||||
command => '/usr/afsmon-env/bin/pip install --upgrade /opt/afsmon',
|
||||
path => '/usr/local/bin:/usr/bin:/bin',
|
||||
refreshonly => true,
|
||||
subscribe => Vcsrepo['/opt/afsmon'],
|
||||
require => Python::Virtualenv['/usr/afsmon-env'],
|
||||
}
|
||||
|
||||
# NOTE(ianw) 2020-02 : moved to mirror-update.opendev.org and ansible
|
||||
cron { 'afsmon':
|
||||
minute => [0, 30],
|
||||
command => '/usr/afsmon-env/bin/afsmon statsd >> /var/log/afsmon.log 2>&1',
|
||||
environment => 'PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin',
|
||||
require => [
|
||||
Python::Virtualenv['/usr/afsmon-env'],
|
||||
Exec['install_afsmon'],
|
||||
File['/etc/afsmon.cfg'],
|
||||
],
|
||||
ensure => absent,
|
||||
}
|
||||
|
||||
}
|
||||
|
8
playbooks/roles/afsmon/README.rst
Normal file
8
playbooks/roles/afsmon/README.rst
Normal file
@ -0,0 +1,8 @@
|
||||
afsmon
|
||||
|
||||
Install the afsmon tool and related bits and pieces for periodic
|
||||
monitoring of AFS volumes. This role is really only intended to be
|
||||
run on the `mirror-update` host as we only need one instance of it
|
||||
running.
|
||||
|
||||
**Role Variables**
|
17
playbooks/roles/afsmon/files/afsmon.cfg
Normal file
17
playbooks/roles/afsmon/files/afsmon.cfg
Normal file
@ -0,0 +1,17 @@
|
||||
[main]
|
||||
# Enable debugging output
|
||||
debug = True
|
||||
|
||||
# If specified, all fileservers in this cell will be queried
|
||||
cell = openstack.org
|
||||
|
||||
# You can specify a specific list of fileservers. This is appended to
|
||||
# the cell fileservers if present, otherwise is the canonical list
|
||||
#fileservers = afs01.dfw.openstack.org
|
||||
# fileserver02.afs.company.com
|
||||
# fileserver03.afs.company.com
|
||||
|
||||
# Options for remote statsd host if required
|
||||
[statsd]
|
||||
host = graphite.opendev.org
|
||||
port = 8125
|
41
playbooks/roles/afsmon/tasks/main.yaml
Normal file
41
playbooks/roles/afsmon/tasks/main.yaml
Normal file
@ -0,0 +1,41 @@
|
||||
- name: Ensure afsmon log directory
|
||||
file:
|
||||
path: '/var/log/afsmon'
|
||||
state: directory
|
||||
owner: root
|
||||
group: root
|
||||
mode: 0755
|
||||
|
||||
- name: Install dependency packages
|
||||
package:
|
||||
name:
|
||||
- python3-pbr
|
||||
- python3-statsd
|
||||
- python3-prettytable
|
||||
state: present
|
||||
|
||||
- name: Install afsmon
|
||||
pip:
|
||||
name: afsmon
|
||||
state: present
|
||||
executable: pip3
|
||||
|
||||
- name: Install configuration file
|
||||
copy:
|
||||
src: afsmon.cfg
|
||||
dest: '/etc/'
|
||||
mode: '0644'
|
||||
|
||||
- name: Install afsmon cron job
|
||||
cron:
|
||||
name: 'afsmon'
|
||||
state: present
|
||||
job: '/usr/local/bin/afsmon statsd >> /var/log/afsmon/afsmon.log 2>&1'
|
||||
hour: '*'
|
||||
minute: '30'
|
||||
|
||||
- name: Install logrotate rules
|
||||
include_role:
|
||||
name: logrotate
|
||||
vars:
|
||||
logrotate_file_name: '/var/log/afsmon/afsmon.log'
|
@ -20,6 +20,7 @@ RSYNC="rsync -avz --no-perms --no-owner --no-group"
|
||||
|
||||
$K5START $RSYNC /var/log/rsync-mirrors $DEST
|
||||
$K5START $RSYNC /var/log/afs-release $DEST
|
||||
$K5START $RSYNC /var/log/afsmon $DEST
|
||||
|
||||
# NOTE(ianw) : r/w volume as this is infrequently accessed; thus no
|
||||
# replications and no "vos release" etc required.
|
||||
|
@ -37,4 +37,8 @@
|
||||
include_role:
|
||||
name: afs-release
|
||||
|
||||
- name: Setup AFS monitoring script
|
||||
include_role:
|
||||
name: afsmon
|
||||
|
||||
# TODO: reprepro and other mirror components
|
||||
|
@ -63,3 +63,10 @@ def test_afs_release_script_run(host):
|
||||
cmd = host.run('/opt/afs-release/release-volumes.py '
|
||||
'--debug --skip-release')
|
||||
assert cmd.succeeded
|
||||
|
||||
def test_afsmon_installed(host):
|
||||
f = host.file('/usr/local/bin/afsmon')
|
||||
assert f.exists
|
||||
|
||||
f = host.file('/etc/afsmon.cfg')
|
||||
assert f.exists
|
||||
|
Loading…
Reference in New Issue
Block a user