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
|
# AFS Monitoring
|
||||||
file { '/etc/afsmon.cfg':
|
# NOTE(ianw) 2020-02 : moved to mirror-update.opendev.org and ansible
|
||||||
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'],
|
|
||||||
}
|
|
||||||
|
|
||||||
cron { 'afsmon':
|
cron { 'afsmon':
|
||||||
minute => [0, 30],
|
minute => [0, 30],
|
||||||
command => '/usr/afsmon-env/bin/afsmon statsd >> /var/log/afsmon.log 2>&1',
|
command => '/usr/afsmon-env/bin/afsmon statsd >> /var/log/afsmon.log 2>&1',
|
||||||
environment => 'PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin',
|
environment => 'PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin',
|
||||||
require => [
|
ensure => absent,
|
||||||
Python::Virtualenv['/usr/afsmon-env'],
|
|
||||||
Exec['install_afsmon'],
|
|
||||||
File['/etc/afsmon.cfg'],
|
|
||||||
],
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
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/rsync-mirrors $DEST
|
||||||
$K5START $RSYNC /var/log/afs-release $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
|
# NOTE(ianw) : r/w volume as this is infrequently accessed; thus no
|
||||||
# replications and no "vos release" etc required.
|
# replications and no "vos release" etc required.
|
||||||
|
@ -37,4 +37,8 @@
|
|||||||
include_role:
|
include_role:
|
||||||
name: afs-release
|
name: afs-release
|
||||||
|
|
||||||
|
- name: Setup AFS monitoring script
|
||||||
|
include_role:
|
||||||
|
name: afsmon
|
||||||
|
|
||||||
# TODO: reprepro and other mirror components
|
# 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 '
|
cmd = host.run('/opt/afs-release/release-volumes.py '
|
||||||
'--debug --skip-release')
|
'--debug --skip-release')
|
||||||
assert cmd.succeeded
|
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